結果を書き込む複数のコンピュータで実行されるプログラムがあり、~/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
ファイルのフルパスではなく、最後に変更されたパスを印刷します。