rsyncがターゲットディレクトリにすでに存在するファイルをコピーしようとしています。

rsyncがターゲットディレクトリにすでに存在するファイルをコピーしようとしています。

次のコマンドを実行して、rsyncを使用して次のファイルのみをコピーしようとします。

  • 新しい
  • さまざまなサイズに出てください
rsync -niav --size-only   /home/me/source/Electronica  /media/externalDrive/dest/Electronica

ただし、このテストを実行すると、次の出力が生成されます。

>f+++++++++ Electronica/music/AlbumArt_{F0CB439F-A1FC-47DB-A698-C561191F3FDE}_Large.jpg
>f+++++++++ Electronica/music/AlbumArt_{F0CB439F-A1FC-47DB-A698-C561191F3FDE}_Small.jpg
>f+++++++++ Electronica/music/Folder.jpg

私はこれをファイルがコピーされたという意味に解釈します。しかし、サイズは同じです! (ただし、時間とフラグは異なります。)rsyncは外付けハードドライブ(他の形式)を意味することもあります。

また、次のコマンドを試しました。

rsync -niav --size-only --ignore-times  /home/me/source  /media/else
rsync -niav --size-only --ignore-existing /home/me/source  /media/else

しかし、ファイルはまだ同じように見えるので、コピーされるという意味です。また何を試すことができますか?

ホームページの説明にどのような問題がありますか?

--size-only     skip files that match in size

答え1

あなたはrsync古典的な「末尾のスラッシュトラップ」に陥った。
ソースパスがスラッシュで終わらない場合、rsyncソースファイルがコピーされます目次。コピーする予定の場合コンテンツソースディレクトリの場合は、スラッシュで終わる必要があります。

次の場所にあるファイルをコピーしているとし、例を見てみましょう/home/me/source/Electronica/music/Folder.jpg

rsync -a /home/me/source/Electronica  /media/externalDrive/dest/Electronica

コピーするElectronica 目次/media/externalDrive/dest/Electronica/Electronica/music/ソースからターゲットまで作成され、そこに保存されますFolder.jpg

rsync -a /home/me/source/Electronica/  /media/externalDrive/dest/Electronica

コピーするコンテンツディレクトリのディレクトリなので、その下のディレクトリをElectronicaコピーして(存在しない場合)。music/media/externalDrive/dest/Electronica/Folder.jpg/media/externalDrive/dest/Electronica/music/Folder.jpg


状況をより混乱させるために、いいえにもかかわらず目的地パスはスラッシュで終わります。

すべてのパスをスラッシュで終わらせる習慣をつけると、rsync不快な驚きを避けることができます。

関連情報