使用 --protect-args 选项时将 $line 参数传递给 rsync

使用 --protect-args 选项时将 $line 参数传递给 rsync

我有一个脚本和这段代码 -

cat file_list.txt | while read line
do
rsync --dry-run -avzPs '$line' '123.456.122.111:$line'
done

file_list.txt 看起来像这样 -

/some/random/directory/file_name.txt
/some/other/directory/a file name.html
.....

$line我遇到的问题是,由于工作原理,rsync 命令无法与参数一起使用--protect-args。我需要在命令中包含此选项,因为某些文件名中包含空格。

但是,我不能只使用通配符并传递所有内容,因为文本文档包含我想要传递的所有路径和特定文件。我该如何解决这个问题?

答案1

为什么不使用--files-from=来指定文件呢?

rsync -avzP --files-from=file_list.txt 123.456.122.111:

--no-relative如果您希望所有文件都位于同一目录中而不需要完整路径,您也可以添加。

答案2

不能使用单引号括住变量名称。不评估单引号字符串。

你的脚本应该是:

cat file_list.txt | while read line
do
    rsync --dry-run -avzPs "$line" "123.456.122.111:$line"
done

相关内容