scpを介して最新のファイルを除くすべてのファイルのコピー/バックアップ

scpを介して最新のファイルを除くすべてのファイルのコピー/バックアップ

結果を書き込む複数のコンピュータで実行されるプログラムがあり、~/data/machine_name/結果ファイルが1 MBを超えるたびにプログラムが続行され、新しいファイルが書き込まれます。 (すべてのコンピュータは同じディレクトリ構造を持っています。)

いずれかのマシンでエラーが発生した場合に備えて、このファイルを自動的にバックアップしたいと思います。最近アクセスしたファイルがプログラムが書き込んでいるファイルであることがわかっているので、このファイルを除くすべての古いファイルをコピーします。次にバックアップジョブがトリガされると、最後のバックアップから省略された最新のファイルが含まれます。

簡単なscpコマンドのみを使用すると、リモートコンピュータから開いたファイルもコピーされます。

これを達成する方法はありますか?この種の操作のためのコマンドラインユーティリティまたはスクリプトはありますか?

答え1

rsyncバックアップユーティリティとオプションが利用可能です--exclude

/usr/bin/rsync -avz --exclude='$EXCLUDED_DIR_OR_FILE' -e ssh /your/base/folder \
user@host_or_ip:/target/machine/path >> /optional/log/file.log

$EXCLUDED_DIR_OR_FILE最後に更新されたファイルを見つけて変数を確認できます。特定のディレクトリで最後に更新されたファイルを見つけるにはいくつかの方法があり、その1つはユーティリティlsで使用することです。awk

ls -lrt | awk '{ f=$NF }; END{ print f }'

このコマンドは、file nameファイルのフルパスではなく、最後に変更されたパスを印刷します。

関連情報