見つけて再同期しますか?

見つけて再同期しますか?

14日より古い10,000を超えるファイルを検索し、見つかったファイルをターゲットにrsyncできるようにしたいです。

これら2つのコマンドを組み合わせる方法はありますか?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

ベストアンサー1

以下に示すオプションのいずれかを使用して find 出力を rsync に送信できます。

方法1

これら2つのオプションは非常に似ています。どちらもディレクトリを特定の場所に変更し、そのfind場所でコマンドを実行するとします。

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

以下からリストをパイプすることもできます。

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

方法#2

この方法はどこでも実行できます。

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync -av --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P:ファイルが見つかったコマンドライン引数の名前とファイル名が削除されました。これにより、最初にsrcディレクトリにCDを挿入せずにsrcディレクトリを使用できます。

引用する

おすすめ記事