在 rsync 中使用“find ..”时,rsync 的 --delete 选项不起作用

在 rsync 中使用“find ..”时,rsync 的 --delete 选项不起作用

我在用着

rsync -avh --progress --delete `find /path/to/files -type f -printf "%p\n" | sort -rn | head -n 5` /path/to/backup/

备份最新的5个文件。如果目标文件夹中的文件不在查找输出的 5 个文件内,则该--delete选项应该删除它们。不幸的是,该--delete选项不起作用。如何让它发挥作用或者如何以不同的方式做我所做的事情?

答案1

手册rsync状态:

--delete

这告诉rsync我们从接收端删除无关的文件(不在发送端的文件),但是仅适用于目录正在同步。

您正在传输多个单独的文件,因此--delete不起作用。

答案2

我似乎还没有足够的声誉来评论你的问题,所以我会在回答中这样做。

首先,我认为如果您发布您正在使用的文件名将会有所帮助。我也想知道子目录结构是什么/path/to/files。我这样说是因为我想知道您find正在运行的是否实际上正在打印最新的文件。您在这里没有对时间戳进行操作,这就是我问的原因。因此,在这一点上,您可能还想粘贴查找的输出以帮助澄清。

另外,我想知道是否-nsort必要。有点跑题了,但你可以做一个sort | tail -5.

如果没有看到有关文件内容(包括目标文件)的更多输出,我不确定这种方法rsync --delete是否有效。这对你有用吗,还是你现在才发现这个?

或者,您可以查看 find 的 -newer、-delete 和/或 mtime 标志。

相关内容