SFTPによる2台のLinuxシステム間のデータ同期

SFTPによる2台のLinuxシステム間のデータ同期

Linux Machine 1 - Directory1(すべてのサブディレクトリとファイルを含む)があります。 Linux SFTP Machine 2 - Directory2(すべてのサブディレクトリとファイルを含む)があります。

SFTPだけを使用して、両方のディレクトリを完全に同期したままにできるソリューション/ツールを探しています。片側でファイル/フォルダを追加/変更/削除した場合は、もう一方の側にコピーする必要があります。

利用できない解決策:rsync - ssh接続が必要です(セキュリティ上の問題のために不可能)試みた解決策 - lftp - >単一のシステムのみを同期するためにファイル/フォルダを書き込んだり変更したりすると、単一のシステムがスムーズに動作します。ただし、マシン1 /マシン2が書き込んで修正/削除すると、lftpは不安定に動作します。私はApache Nifiを試しましたが、これは過剰なので、より簡単な解決策を見つけることが可能です。

助けてくれてありがとう!

答え1

find . -type f | sort > files-src.txt関連するディレクトリ1ファイル名のリストを生成するには、machine1でコマンドを使用します。ファイルの長さとsha224ファイルのコンテンツハッシュをこのファイルまたは関連ファイルに入れます。 findの便利な-lsスイッチを試してみてください。

「files-src.txt」は machine2 の Directory2 に転送されます。

ローカルファイルの読み取り専用に基づいて、machine2からローカルの "files-dst.txt"ファイルを生成します。

rsyncこれで、オンラインコンテキストで実行する操作と同様に、{src、dst}.txtファイル間の違いを計算できます。 srcに表示されないdstファイルを削除するのはとても簡単です。次に、srcファイルと一致する(長さ、ハッシュ)dstファイルを無視します。 (ハッシュは長さが一致する場合にのみ一致します。)最後に、次のいずれかに対応するすべてのsrcファイルの転送をスケジュールします。

  • 対応するdstファイルがない
  • 一致しないハッシュを含むdstファイルがあります。

関連情報