如果文件在服务器上被删除,RSync 会将其移动到其他目录

如果文件在服务器上被删除,RSync 会将其移动到其他目录

所以现在我使用 rsync 与服务器同步文件。有时服务器上的文件会被删除(我知道这个--delete选项,但我不使用它),这些文件会留在我的本地目录中,以便我稍后清理。

不幸的是,这需要我拉出服务器上的文件列表,找出哪些文件不再在服务器上,然后将它们移动到不同的本地目录。

我想以某种方式自动化这个过程。我不知道 rsync 中是否存在这样的选项,但只要它能自动执行这个重复的任务,我愿意做任何事情。

有谁知道这如何实现?

答案1

我自己找到了解决办法。解决方案是使用 将 SFTP 目录从服务器挂载到本地目录sshfs,然后使用diff。对于希望使用此解决方法的人,您可以在此处找到说明:http://blog.damontimm.com/how-to-mount-a-sftp-folder-ssh-ftp-on-ubuntu-linux-using-sshfs-fuse/和这里:http://linuxcommando.blogspot.com/2008/05/compare-directories-using-diff-in-linux.html只需记住使用-o allow_othersshfs 选项,否则您将遇到文件权限问题。

答案2

我找到了一个可能的解决方案,但您必须运行 rsync 两次。

在第一次运行中,复制新的和更改的文件,例如:

rsync -xav source/ dest/

第二次运行,删除并移动文件:

rsync --delete --backup --backup-dir=DIR_DELETED_FILES -xav source/ dest/

请注意,--backup-dir 可以是绝对的。

相关内容