使用 () 进行 Rsync 路径

使用 () 进行 Rsync 路径

有人能告诉我怎样让这条线路工作吗?

rsync -rtvz --delete --exclude-from exclude.txt --out-format="%M %o %n" -e "ssh -p 2323 -i /root/.ssh/server" [email protected]:'/cygdrive/C/Nas/Public/Büro/Kunde/Anfrage Eingang (AFE)/ '/volume2/Nas/Public/Büro/Kunde/Anfrage Eingang (AFE)/'

我收到此错误消息 -ash:意外标记“(”附近的语法错误

这是 Synology DSM 6.x

答案1

[电子邮件保护]:'/cygdrive/C/Nas/Public/Büro/Kunde/Anfrage Eingang (AFE)/' '/volume2

看起来你错过了 (AFE)/ 和 /volume2 之间的结束标记 '

您可能还需要转义括号 \( \)

答案2

这一个完成了工作:-)

如果您需要传输包含空格的文件名,您可以指定 --protect-args (-s) 选项,或者您需要以远程 shell 可以理解的方式转义空格。例如:

因此,最终答案是,如果您想避免本地副本上出现空格和括号错误,只需对变量使用双引号,例如:

source="/root/new folder ()/"
dest="/root/some other folder ()"
rsync -rtvz --delte "$source" "$dest"

如果您想从远程主机复制,则必须设置--protect-args标志。

rsync -rtvz --delete --protect-args -e "ssh -p 22 -i /root/.ssh/somekey" root@someserver:"$source" "$dest"

或者

rsync -rtvzs --delete -e "ssh -p 22 -i /root/.ssh/somekey" root@someserver:"$source" "$dest"

相关内容