rsync は --files-from オプションと -mtime オプションを使用して、最新のディレクトリから古いファイルをダウンロードします。

rsync は --files-from オプションと -mtime オプションを使用して、最新のディレクトリから古いファイルをダウンロードします。

36時間(2200分)未満のファイルのみを同期するには、次のコマンドを使用します。

sudo su -c "rsync -vrt --delete --rsync-path='sudo rsync' --files-from=<(find '/home/dir1' -mmin -2200 -exec basename {} \;)  '/home/dir1'  Maildir"

36時間を超えても、特定のサブディレクトリ内のすべてのファイルをインポートすることを除いて機能します。これは、これらのサブディレクトリが36時間以内に作成されなかったためです。

そのため、findコマンドを--files-from次のように修正しました。

find '/home/dir1' -type f -mmin -2200 -exec basename {} \;

今新しい質問がありました。ファイルを保存できず、次のようなエラーがたくさん発生して失敗します。

rsync: link_stat "/home/dir1/new/blah" failed: No such file or directory (2)

1つのrsyncを実行してディレクトリを作成し、別のrsyncを実行してファイルを転送することに加えて、この問題を解決する他の方法はありますか?

ベストアンサー1

まあ、これで遊んで他の場所でさまざまな提案をまとめた後、私は次の結論を下しました。

sudo su -c "rsync -vrt --delete --from0 --files-from=<(cd /home/dir; find . -type f -mmin -2200 -print0 )  '/home/dir1'  Maildir"

これは、コマンドを実行する前にcdまずソースディレクトリに移動しますfind。また、findコマンドのnull終了出力を解析できるようにrsyncに引数を追加する-print0代わりに、findコマンドに引数を使用しました。-exec basename {}--from0

おすすめ記事