フォルダ(多数のファイルとサブフォルダ、数百GB)があります。私はrsyncを使ってフォルダをコピーしましたが、タイムスタンプを保持するのを忘れました。
これで、新しいフォルダに多くの新しいファイルが追加され、既存のファイルが修正されました。
古いフォルダのタイムスタンプを新しいフォルダにコピーする必要がありますが、2021年7月9日以降にファイルが変更されていない場合にのみ適用されます。
私はrsyncがこれを行うとは思わない。使用する必要があるようですが、touch -t
すべてのファイルを処理する効率的な方法が必要です。もっと良い方法がありますか?または、7月9日以降にファイルが変更されていない場合は、どのようにすべてのファイルを処理してタイムスタンプを更新しますか?
ありがとうございます。
ベストアンサー1
以下は、機能する必要がある1行のコードです。
find /path/to/newdir -type f -not -newermt 09jul2021 -printf './%P\000' | rsync -r --files-from=- -0 --size-only --times /path/to/olddir/ /path/to/newdir/
コマンドの前半は、"newdir"
2021年7月9日以降に変更されていないファイルのnull区切りリストを生成し、同期ディレクトリへの相対パス形式で指定されます。
コマンドの後半は対応するファイルのrsync
リストで実行され、変更タイムスタンプを"newdir"
一致するように変更します。"olddir"