如何使用 rsync 删除超过 1 周的文件

4 linux ubuntu rsync

我使用 rsync 来备份文件和文件夹:

 rsync -avqz --stats --delete /media/server/ /media/Server2/
Run Code Online (Sandbox Code Playgroud)

这将删除源上不存在的文件,并确保目标是源的精确副本

但是我的老板希望我应该只删除源代码中不存在的 1 周前的文件。就像是:

rsync -avqz --stats --delete(1 week old) /media/server/ /media/Server2/
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Cal*_*leb 5

Rsync 不支持这种开箱即用的行为。您可能会发现另一个工具,rsnapshot例如 Jaylen 建议的一个很好的举措。

如果你真的想完全按照你的描述去做,这里是你可以做的。

  • 首先,在不删除的情况下运行 rsync。这只会将所有内容从您的实时数据复制到您的备份。
  • 接下来再次运行 rsync 并删除,但这次在 TEST 模式 (-n) 下。这将根据您的实时数据中已删除但尚未在备份中删除的内容生成要删除的文件列表。将此输出保存到带有日期的文件中。
  • 现在保留要删除的内容列表,但仅在一周后处理它们。保持一个队列,只处理已经在队列中至少一周的删除建议。

或者,使用rsync --delete -nbut的输出而不是排队,使用一些其他检查,例如备份中的上次修改日期,以确保您只删除一周内未编辑的内容。这不是您要求的行为,但更容易编程并且可能就足够了。


Jay*_*yen 4

我建议您和您的老板改为设置 rsnapshot。它会尽可能频繁地为您提供快照,并根据您的需要返回任意远的位置。