rsyncにコピーするときに名前で既存のファイルを除外する

rsyncにコピーするときに名前で既存のファイルを除外する

次の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はそれを更新しません。

-irsyncを再度実行してフラグを追加し、既存のファイルの出力を表示しますか?コピーのためにコピーされたファイルに1行を追加します。そこに問題を指摘できる情報があるかどうか疑問に思います。

おすすめ記事