Rsync 多个名称中带有空格的文件

Rsync 多个名称中带有空格的文件

我正在尝试将文件备份到服务器上,但我遇到了名称中包含空格的文件的问题。

我在终端中使用这个命令:

FILES="testing/space\ in\ filename testing/and\ again"; rsync -v $FILES server::address

testing是文件夹,其中两个文件是space in filenameand again

当我运行它时,我得到以下结果:

rsync: link_stat "/home/user/testing/space\" failed: No such file or directory (2)
rsync: link_stat "/home/user/in\" failed: No such file or directory (2)
rsync: link_stat "/home/user/filename" failed: No such file or directory (2)
rsync: link_stat "/home/user/testing/and\" failed: No such file or directory (2)
rsync: link_stat "/home/user/again" failed: No such file or directory (2)

我一直在考虑使用该--protect-args选项,但我也未能使其发挥作用。

答案1

您可以临时更改 IFS(内部字段分隔符):

FILES="long filename with spaces
another one"
OLDIFS="$IFS"
IFS=$'\n'
rsync -v $FILES server::address
IFS="$OLDIFS" # restores default behaviour

请注意,这$'\n'是羞辱主义。您可以对其他 Posix shell 尝试此操作:

IFS="
"

要处理多个文件,只需用新的 IFS(在上述情况下为换行符)分隔它们。您甚至可以使用您喜欢的任何字符来代替换行符。

相关内容