如何仅使用文件名来 rsync 文件夹及其子文件夹?

如何仅使用文件名来 rsync 文件夹及其子文件夹?

我想要将文件夹中的文件同步/media/alex/Disk1/Movies到名为 的文件夹/media/alex/Disk2/Movies。我想要复制每个如果不存在,则将文件/media/alex/Disk1/Movies或子目录复制到正确位置/media/alex/Disk2/Movies。文件的大小和时间属性无关紧要。

例如,我有一个仅存在于 Disk1: 上的文件/media/alex/Disk1/Movies/Experimental/test.avi,因此只有这个文件应该被复制到/media/alex/Disk2/Movies/Experimental

我尝试过使用语法

rsync -v -n -auv  --list-only /media/alex/Disk1/Movies  /media/alex/Disk2/Movies

但它列出了全部目录 '/media/alex/Disk1/Movies' 中的文件,即使是存在于 下的文件/media/alex/Disk3/Movies。如何rsync正确使用语法?

答案1

尝试

rsync -n -auv --size-only /media/alex/Disk1/Movies/  /media/alex/Disk2/Movies

如果这样做符合你的要求,你可以删除-n参数

一些解释:

  • --size-only确保您不必触碰目标文件夹中的电影来执行校验和,并且您不必介意时间是否不同(因为电影文件的内容没有改变,所以这应该没问题)
  • 的语法rsync可能有点令人困惑。在您的示例中,您省略了后面//media/alex/Disk1/Movies,这实际上会将整个电影文件夹复制到其他电影文件夹中(因此它将是/media/alex/Disk2/Movies/Movies

相关内容