我有一个脚本和这段代码 -
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