SSH経由で1台のサーバーで多数のファイルを同期する

SSH経由で1台のサーバーで多数のファイルを同期する

サーバー間のログファイル同期プロセスを高速化する必要があります。

ログを生成するマシン(LOGMACHINE)は、次のようにツリーにログを生成します。

/Files
/Files/LOGS1/
/Files/LOGS1/logFiles/
/Files/LOGS1/logFiles/typeLog1A
/Files/LOGS1/logFiles/typeLog1B
/Files/LOGS1/logFiles/typeLog1C
/Files/LOGS1/logFiles/typeLog1C/fileLog1C-20210113-0900.xml.gz
/Files/LOGS1/logFiles/typeLog1C/fileLog1C-20210113-0915.xml.gz
/Files/LOGS1/logFiles/typeLog1C/fileLog1C-20210113-0930.xml.gz
/Files/LOGS1/logFiles/typeLog2A
/Files/LOGS1/logFiles/typeLog2A/fileLog2A-20210113-0900.xml.gz
/Files/LOGS1/logFiles/typeLog2A/fileLog2A-20210113-0915.xml.gz
/Files/LOGS1/logFiles/typeLog2A/fileLog2A-20210113-0930.xml.gz

/Files/LOGS2/
/Files/LOGS2/logFiles/
/Files/LOGS2/logFiles/typeLog1A
/Files/LOGS2/logFiles/typeLog1B
/Files/LOGS2/logFiles/typeLog1C
/Files/LOGS2/logFiles/typeLog1C/fileLog1C-20210113-0900.xml.gz
/Files/LOGS2/logFiles/typeLog1C/fileLog1C-20210113-0915.xml.gz
/Files/LOGS2/logFiles/typeLog1C/fileLog1C-20210113-0930.xml.gz
/Files/LOGS2/logFiles/typeLog2A
/Files/LOGS2/logFiles/typeLog2A/fileLog2A-20210113-0900.xml.gz
/Files/LOGS2/logFiles/typeLog2A/fileLog2A-20210113-0915.xml.gz
/Files/LOGS2/logFiles/typeLog2A/fileLog2A-20210113-0930.xml.gz

typeLog1*約4000個のフォルダと9000個のフォルダがあります。typeLog2*各フォルダには15分ごとに新しいファイルがあります。

2 台のサーバーがあり、SERV1 はフォルダを同期し、typeLog1*SERV2 はフォルダを同期し、typeLog2*両方とも LOGMACHINE で同期します。各サーバーは LOGS1 および LOGS2 フォルダーを同期します。

現在、このアプリを使用しており、rsyncLOGSフォルダの1つを取得するのに30分しかかかりません。これにより、ファイルあたり約30分〜1時間程度の遅延が発生します。

rsync複数を並列に実行するソリューションを考え出しました。残念ながら、並列sshに実行できるセッションは8つだけです。これは、ログが生成されるマシンの制限です。

限界:

  • 使用すべきssh
  • ログが生成されたコンピュータにソフトウェアをインストールできません。

rsyncこのプロセス、使用、または代替のスピードを上げる方法はありますか?

修正する:

現在rsyncs

  • SERV1から:

    rsync -avz --rsync-path=/usr/local/bin/rsync --ignore-existing --delete --files-from=<(ssh user@logmachine 'cd /home/user/Files/LOGS1/logFiles/; find . -mtime -1 -type f -name "*fileLog1*.xml.gz"') user@logmachine:/home/user/Files/LOGS1/logFiles/ Files/LOGS1/logFiles/
    
    rsync -avz --rsync-path=/usr/local/bin/rsync --ignore-existing --delete --files-from=<(ssh user@logmachine 'cd /home/user/Files/LOGS2/logFiles/; find . -mtime -1 -type f -name "*fileLog1*.xml.gz"') user@logmachine:/home/user/Files/LOGS2/logFiles/ Files/LOGS2/logFiles/
    
  • SERV2から:

    rsync -avz --rsync-path=/usr/local/bin/rsync --ignore-existing --delete --files-from=<(ssh user@logmachine 'cd /home/user/Files/LOGS1/logFiles/; find . -mtime -1 -type f -name "*fileLog2*.xml.gz"') user@logmachine:/home/user/Files/LOGS1/logFiles/ Files/LOGS1/logFiles/
    
    rsync -avz --rsync-path=/usr/local/bin/rsync --ignore-existing --delete --files-from=<(ssh user@logmachine 'cd /home/user/Files/LOGS2/logFiles/; find . -mtime -1 -type f -name "*fileLog2*.xml.gz"') user@logmachine:/home/user/Files/LOGS2/logFiles/ Files/LOGS2/logFiles/
    

このフォルダには他のファイルもあるため、ファイル内のパターンを見つける条件が必要です。

ベストアンサー1

tar.gzを使用してログを圧縮し、rsyncを使用してコピーし、コピープロセスのタイミングを確認します。

おすすめ記事