rsync --delete 不起作用

rsync --delete 不起作用

操作系统是 Debian 10,rsync 版本 3.1.3。我像这样运行 rsync:

time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest

这可以复制文件,但不会删除任何已删除的内容。 (要么从 src 中完全删除,要么在我的例子中,从 filelist.txt 中删除)这是一个大问题。我发现的唯一解决方法是简单地删除整个目标并再次复制所有内容,但这需要大量时间,并且基本上否定了首先使用 rsync 的意义。

这是一个错误吗?如何让 rsync 正常工作,尊重 --delete 标志,就像它应该的那样?

编辑:

例如:

  • 如果 filelist.txt 包含“foo”,则 /path/to/dest 将包含“foo”。
  • 如果 filelist.txt 包含“foo”和“bar”,则 /path/to/dest 将包含“foo”和“bar”。
  • 如果 filelist.txt 包含“foo”、“bar”和“bat”,则 /path/to/dest 将包含“foo”、“bar”和“bat”。
  • ETC

假设“foo”“bar”“bat”等是目录。

答案1

您需要告诉 rsync 删除丢失的参数:

rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
  • 因此,如果您删除该目录,foo它也会被/path/to/dest删除--delete-missing-args
  • foo仍需列入filelist.txt.
  • 需要该--delete参数才能允许 rsync 删除文件foo夹中的文件

答案2

不会。不会rsync因为文件列表不包含这些文件或者它为空而删除文件/目录。

如果您正在使用--files-from它将尝试仅同步从源到目标列出的文件。

它不会仅仅因为传递给 的文件列表中不存在这些文件而删除它们--files-from

要使 --delete 工作,您需要使用实际的源路径..就像这样

rsync -ar --delete path/to/src path/to/destination 

相关内容