我正在执行以下两个rsync
命令。在第一个命令中,我将文件从源复制到目标,然后在第二个命令中检查文件并删除源中的文件。
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 不会更新。
您可以尝试再次运行 rsync,但添加标志-i
并显示现有文件的输出吗?由于复制的原因,它将为复制的文件添加一行。我想知道其中是否有一些信息可以指出该问题。