我正在尝试从十分钟前的远程目录中提取所有内容,然后删除源文件。
我的远程查找似乎正在工作(在远程盒子上独立测试),但是当 rsync 使用它时,我的用户的主路径将作为查找输出的前缀,如下所示:
rsync -avz --dry-run --remove-source-files --files-from=<(ssh spot@host "find /mnt/volume_2/partners/test/uploads/ -amin +10 -type f,d -print0") spot@host:. .
receiving incremental file list
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1054" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1105" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1105/subfile-1105" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1101" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1056" failed: No such file or directory (2)
rsync: [sender] link_stat "/home/spot/mnt/volume_2/partners/test/uploads/file-1058" failed: No such file or directory (2)
我花费的时间比我想承认的尝试解决这个问题的时间要多,但没有成功。我希望这里有人能很好地为我指明正确的方向。
谢谢!
rsync 看错了地方,因为这些路径是相对的(来自 rsync 手册页,强调我的):
将绝对路径发送到files -from选项,但不要另外定义根 (/) 以外的源目录。这应该可行 - 我在主机名后替换了一个字符:
或者- 当您真正想要处理目标中的相对路径时特别有用 -告诉 find 发出相对路径并实际使用它们:
请注意,我将
<()
重定向切换到普通|
管道,以实现更好的互操作性和更少的意外,同时转义命令以包含在脚本中。我还在您的评论之上添加了内容,因为输入现在以空值分隔,因此告诉rsync--from0
它是有意义的。