![Rsync 多个名称中带有空格的文件](https://linux22.com/image/18641/Rsync%20%E5%A4%9A%E4%B8%AA%E5%90%8D%E7%A7%B0%E4%B8%AD%E5%B8%A6%E6%9C%89%E7%A9%BA%E6%A0%BC%E7%9A%84%E6%96%87%E4%BB%B6.png)
我正在尝试将文件备份到服务器上,但我遇到了名称中包含空格的文件的问题。
我在终端中使用这个命令:
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(在上述情况下为换行符)分隔它们。您甚至可以使用您喜欢的任何字符来代替换行符。