日付別ファイルの再同期

日付別ファイルの再同期

次のファイル構造があります。

...folders/to/copy
...folders/to/mirror

私はやってきた:

rsync --ignore-existing -raz --progress $source $destination

これは、両方のフォルダツリーのすべてのコンテンツを最新の状態に保つのに役立ちます。ただし、24時間前に変更されたファイルに対してのみこれを実行できます。私は次のことを試しました:

rsync -rav `find $source -mtime 1` $destination

問題は、これがファイルツリーを混乱させ、必要な方法で機能しないことです。もっと良い方法がありますか?

「フォルダ」とその中のすべての項目への相対パスを使用して、ある場所から別の場所にファイル構造をバックアップし、24時間経過したファイルだけを残したい(mtime)。

ベストアンサー1

これを使用して、find | rsync次のようにコピーしたいファイルをフィルタリングできます。

src=/source/folders/to/./copy
dst=/destination/mirrored/folders

find "$src/" -type f -mtime +0 -print0 |
    rsync --dry-run -a -iv --files-from - --from0 / "$dst"

--dry-run一連の結果に満足したら削除してください。-ivより静かな操作が必要な場合は削除してください。

/./ソースパスの一部は、ファイルパスが保存されるべきポイントを定義することを指摘する必要があります。たとえば、パスがある場合、そのターゲットはに/source/folders/to/./copy/sub/here.txtなります/destination/mirrored/folders/copy/sub/here.txt。詳細については、および--files-from--relative-Rオプションのマニュアルを参照してください。man rsyncソースパスが相対的な場合でも問題ありません。

このソリューションはfindGNUまたはその他で利用できます。そのオプション-print0がない場合は削除することも--from0できますが。次の議論をご覧ください。-print0-exec printf '%s\0' {} +GNU findの-print0に対するPOSIXの置換

おすすめ記事