Rsync,--delete 不删除目标上的文件

Rsync,--delete 不删除目标上的文件

我运行一个带有插件的游戏服务器,该插件将每小时的服务器备份放在 /backups 中。1 天后,该插件每天保存 2 个备份。我想将此备份目录同步到包含超过 2 天的文件的远程服务器,这样它就不会同步最终会在一天结束时被删除的文件。为此,我运行此脚本:

find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --delete {} me@host:/remote/path/server-backups/ \;

但是,--delete 实际上并没有删除目标主机上的旧文件。这是因为 mtime 吗?有解决方法吗?

答案1

execfind 中的将分别 rsync 每个文件,因为每次find将返回 1 个文件。因此,您的--delete命令将不起作用,因为您的命令基本上是scp

你可以做的是

find /path/backups/ -type f -mtime -2 -printf '%P\n' | rsync -avz --progress --delete --exclude-from=- -e "ssh -p 512" /path/backups/ me@host:/remote/path/server-backups/

这会将文件夹 rsyncbackupsserver-backups,但会排除 2 天以内的文件。您可以先将 放入--dry-runrsync 中进行测试。

答案2

尝试使用 --recursive

它看起来应该是这样的:

find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --recursive --delete {} me@host:/remote/path/server-backups/ \; 

相关内容