我正在尝试将文件备份到服务器上,但我遇到了名称中包含空格的文件的问题。
我在终端中使用这个命令:
FILES="testing/space\ in\ filename testing/and\ again"; rsync -v $FILES server::address
testing
是文件夹,其中两个文件是space in filename
和and 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(在上述情况下为换行符)分隔它们。您甚至可以使用您喜欢的任何字符来代替换行符。