rsync 远程查找前缀主目录?

rsync 远程查找前缀主目录?

我试图从超过十分钟的远程目录中提取所有内容,然后删除源文件。

我的远程查找似乎正在工作(在远程框上独立测试),但是当 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)

我花了比我愿意承认的更多的时间来尝试解决这个问题,但没有成功。我希望这里有人能给我指明正确的方向。

谢谢你!

答案1

rsync 查看的是错误的位置,因为这些路径是相对的(来自 rsync 手册页,重点是我的):

--files-from=文件

[...]

从 FILE 读取的文件名都是相对于源目录

任何一个发送绝对路径到文件来自选项,但是不要另外定义源目录除了根目录 (/) 之外。这应该可行 - 我在主机名后替换了一个字符:

rsync -avz --dry-run --remove-source-files --from0 --files-from=<(ssh spot@host "find /mnt/volume_2/partners/test/uploads/ -amin +10 -type f,d -print0") spot@host:/ .

或者- 当你真正想处理目标中的相对路径时尤其有用 -告诉 find 发出相对路径并实际使用它们:

ssh spot@host "cd /mnt/volume_2/partners/test/uploads/; find -amin +10 -type f,d -print0" | rsync -avz --dry-run --remove-source-files --from0 --files-from=- spot@host:/mnt/volume_sfo2_01/partners/test/uploads/ .

注意,我将<()重定向切换到普通|管道,以获得更好的互操作性和更少的意外,同时转义命令以包含在脚本中。我还在--from0您的评论之上添加了内容,因为输入现在是空分隔的,因此告诉同步是的。

相关内容