rsync 花括号中有一个项目问题?

rsync 花括号中有一个项目问题?

当我在花括号中传递排除列表时,rsync 出现问题,以下两行有什么区别?

sudo rsync -aHAXxhvi --delete --exclude={/1111111/} /etc/ /media/destino/etc/

sudo rsync -aHAXxhvi --delete --exclude={/1111111/,} /etc/ /media/destino/etc/

对于第一个,目录 /etc/111111 被复制,排除不起作用;对于第二个,目录 /etc/111111 被复制,唯一的区别是逗号。

这是预期的行为吗?

问候。

答案1

花括号由 shell (bash/zsh) 扩展,而不是由 rsync 扩展。(例如,如果您有一个包含两个项目的列表,shell 会将其扩展为两个单独的“--exclude=”选项。)

是的,在 shell 语法中,括号扩展仅当至少有两个元素时才会发生:

正确格式的括号扩展必须包含未加引号的左括号和右括号,并且至少一个不带引号的逗号或有效的序列表达式。任何不正确形成的括号扩展均保持不变。

相关内容