rsync 使用 --files-from 和 -mtime 选项下载较新目录中的旧文件

rsync 使用 --files-from 和 -mtime 选项下载较新目录中的旧文件

我有以下命令来尝试仅同步小于 36 小时(2200 分钟)的文件:

sudo su -c "rsync -vrt --delete --rsync-path='sudo rsync' --files-from=<(find '/home/dir1' -mmin -2200 -exec basename {} \;)  '/home/dir1'  Maildir"

它可以工作,只是它会带来某些子目录中的所有文件,即使它们已经超过 36 小时了。这是因为这些子目录的时间小于 36 小时。

所以我将find命令修改--files-from为:

find '/home/dir1' -type f -mmin -2200 -exec basename {} \;

现在我有一个新问题。它无法保存文件并失败并出现许多以下错误:

rsync: link_stat "/home/dir1/new/blah" failed: No such file or directory (2)

除了执行一次 rsync 来创建目录,然后再执行另一次 rsync 来传送文件之外,还有其他方法可以解决此问题吗?

答案1

好吧,在摆弄这个并拼凑其他地方的不同建议之后,我想出了这个:

sudo su -c "rsync -vrt --delete --from0 --files-from=<(cd /home/dir; find . -type f -mmin -2200 -print0 )  '/home/dir1'  Maildir"

在运行命令之前,这将cd首先进入源目录find。我还使用-print0find 命令的参数而不是向 rsync-exec basename {}添加一个--from0参数,使其能够解析 find 命令的以空字符结尾的输出。

相关内容