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,那么您就可以避免任何令人讨厌的意外。

相关内容