我必须用 rsync 备份一组用户数据。只有一件小事我不知道该怎么做。当用户删除文件时,它会保留在服务器上。这很好,因为它可能被错误地删除了,但如果它不会永远留在那里就好了。
那么当它们在 SRC 上一段时间(例如 7 天)没有出现时,我如何在 DEST 上进行 rsync 删除文件
我知道我可以编写一个脚本,在文件夹中的每个文件上手动使用 rsync,然后确定是否应该删除 DEST 上的文件,但是这样做只是为了稍后了解 rsync 有这个功能已经。虽然我找不到它。
非常感谢您的时间
小智 7
这些--backup
--backup-dir=
标志可能就是您正在寻找的内容,如果您为 backup-dir 指定相对路径,则会在您的目标目录中创建一个目录,并且删除的任何文件都将以其原始路径存储在该目录中。如果你想使用绝对路径当然也可以。
清除旧的已删除文件是另一个问题,我的使用使问题--times
变得更加复杂,因为已删除文件上的时间戳将反映文件的最后修改时间,而不是删除时间。我正在考虑的一种选择是使用某种日期字符串构建 backup-dir 值,并使用它来随着时间的推移进行解析和清除。例如--backup-dir=/DELETED_FILES/$(date "+%Y_%m_%d-%H_%M_%S")
在一些示例文件上使用它,最简单的版本是:
rsync --delete --backup --backup-dir=DELETED_FILES/ --recursive --times src/ dest/
Run Code Online (Sandbox Code Playgroud)
或者可以使用的带日期标记的版本是:
rsync --delete --backup --backup-dir=DELETED_FILES/$(date "+%Y_%m_%d-%H_%M_%S") --recursive --times src/ dest/
Run Code Online (Sandbox Code Playgroud)
我会将 DELETED_FILES 目录放置在目标目录之外的绝对路径上,您可能想要这样做。