![远程脚本通过 ssh 生成的 rsync 文件列表](https://linux22.com/image/568904/%E8%BF%9C%E7%A8%8B%E8%84%9A%E6%9C%AC%E9%80%9A%E8%BF%87%20ssh%20%E7%94%9F%E6%88%90%E7%9A%84%20rsync%20%E6%96%87%E4%BB%B6%E5%88%97%E8%A1%A8.png)
for f in `ssh $SSHCRED "~/file-list.sh"`
do
rsync --progress --times --partial --append --rsh=ssh -r -h --remove-sent-files $SSHCRED:$f $OUTDIR
done
这就是我今天要做的事情。
我希望通过将输出ssh $SSHCRED "~/file-list.sh"
直接发送到 rsync 来实现这一点。这样应该更快,而且我可以轻松中止一个 rsync 操作。
但我发现至少有一个问题:远程脚本会生成一个包含绝对路径的文件列表。为了让 rsync 正常工作,我认为我需要在每个路径前添加 SSH 凭据,如下所示:
user@host:/path/to/file1
user@host:/path/to/file2
user@host:/path/to/file3
这可能吗?
答案1
生成文件列表并使用以下--files-from=FILE
选项将其交给 rsync:
rsync --your-options --files-from=filelist.txt user@host:/basedir targetdir
这应该是很多比对每个文件调用 rsync 更快。