我正在尝试使用 rsync 仅复制以下命令
rsync -niav --size-only /home/me/source/Electronica /media/externalDrive/dest/Electronica
Run Code Online (Sandbox Code Playgroud)
但是,此试运行会产生以下输出:
>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
Run Code Online (Sandbox Code Playgroud)
我解释为这些文件被复制。但它们的大小相同!(不过,时间和标志是不同的)。此外 rsync 指的是外部硬盘驱动器(具有不同的格式)。
我还尝试了以下命令:
rsync -niav --size-only --ignore-times /home/me/source /media/else
rsync -niav --size-only --ignore-existing /home/me/source /media/else
Run Code Online (Sandbox Code Playgroud)
但是,这些文件仍然以相同的方式显示,这意味着它们会被复制。我还能尝试什么?
主页描述有什么问题?
--size-only skip files that match in size
Run Code Online (Sandbox Code Playgroud)
n.s*_*.st 13
你已经陷入了rsync
经典的“尾部斜杠陷阱”:
如果源路径不以斜杠结尾,rsync
则会复制源目录。如果您打算复制源目录的内容,则需要以斜杠结尾。
让我们看一个例子,假设你想复制一个文件/home/me/source/Electronica/music/Folder.jpg
:
rsync -a /home/me/source/Electronica /media/externalDrive/dest/Electronica
Run Code Online (Sandbox Code Playgroud)
会将Electronica
目录从源复制到目标,因此它将创建/media/externalDrive/dest/Electronica/Electronica/music/
并放入Folder.jpg
那里。
rsync -a /home/me/source/Electronica/ /media/externalDrive/dest/Electronica
Run Code Online (Sandbox Code Playgroud)
将复制内容的的Electronica
目录,所以它会复制music
目录下/media/externalDrive/dest/Electronica/
(如果不存在的话),并Folder.jpg
会在结束了/media/externalDrive/dest/Electronica/music/Folder.jpg
。
更令人困惑的是,目标路径是否以斜杠结尾并不重要。
只要养成rsync
用斜线结束所有路径的习惯,那么您就可以避免任何令人讨厌的惊喜。