過去1時間でターゲット(ソースを除く)ファイルが変更されていない場合は、ファイルをコピーするコマンドの検索を試みます。
答え1
私が知っている限り、あなたが望むものを正確に実行するコマンドはありません。次のことがうまくいきます(--dry-run
結果に満足すると確信している場合は削除し、--verbose
より静かに実行するには次のように置き換えてください)。--quiet
src=/path/to/source
dst=/path/to/target
comm -z -23 \
<(find "$src" -type f -printf '%P\0' | sort -z) \
<(find "$dst" -type f -mmin -60 -printf '%P\0' | sort -z) |
rsync --dry-run --verbose --archive --from0 --files-from - "$src" "$dst"
これは、比較的新しいユーティリティがNUL終了回線をどのように処理するかを理解していると仮定します。必要に応じて、ファイル名に改行文字が含まれていないことを保証できる限り、コマンドから3つの-z
フラグを削除して置き換えることができます。rsync
--from0
\0
find
\n
答え2
すべてのコピーが既存のファイルの場合は、別の方法で表示できます。つまり、ローカルファイルが1時間以上古い場合は上書きされます。だから、目的地ディレクトリを作業ディレクトリとして:
find . -mindepth 1 -maxdepth 1 -type f -mmin +60 -exec cp /source/directory/{} . \;
どこ:
find . -mindepth 1 -maxdepth 1 -type f -mmin +60
1時間以上古いローカルファイルを探す-exec cp /source/directory/{} . \;
同じ名前の名前で上書き/source/directory