远程脚本通过 ssh 生成的 rsync 文件列表

远程脚本通过 ssh 生成的 rsync 文件列表
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 更快。

相关内容