次の2つのコマンドを実行していますrsync
。最初のコマンドはソースのファイルをターゲットにコピーし、2番目のコマンドはファイルを確認してソースのファイルを削除します。
rsync --info=progress2 -r /local/data/ /import/myNAS/data
rsync --info=progress2 -r --checksum --remove-source-files /local/data/ /import/myNAS/data
ターゲットに存在しないファイルをソースからターゲットにコピーして削除したいと思います。この--ignore-existing
フラグを使用してこれを実行できますが、そのフラグを使用すると最新のファイルがコピーされます。タイムスタンプは確認せずに名前だけを確認したいと思います。これは、同じ名前のファイルがターゲットに存在する場合は、そのファイルをソースからコピーしたり、ソースからファイルを削除したりしないことを意味します。
可能ですか?
答え1
あなたの説明がどのように機能するかと一致しません--ignore-existing
。実際には、ターゲットにすでに存在するファイル(最新のファイルでも)がコピーされるのを防ぐ必要があります。
$ rsync -a a/ b/
$ touch a/new a/update
$ rsync -ai --ignore-existing a/ b/
.d..t....... ./
>f++++++++++ new
$ ls -ln */{new,update}
-rw-r--r-- 1 34570 344586812 0 Aug 17 14:50 a/new
-rw-r--r-- 1 34570 344586812 7 Aug 17 14:50 a/update
-rw-r--r-- 1 34570 344586812 0 Aug 17 14:50 b/new
-rw-r--r-- 1 34570 344586812 7 Mar 26 17:02 b/update
a/update
これで更新されたタイムスタンプがありますが、rsyncはそれを更新しません。
-i
rsyncを再度実行してフラグを追加し、既存のファイルの出力を表示しますか?コピーのためにコピーされたファイルに1行を追加します。そこに問題を指摘できる情報があるかどうか疑問に思います。