rsync - rsync --exclude 不排除第一个值
问题描述
当我使用 rsync--exclude
时,如下所示:
rsync -avzhe --exclude={'/var/','/generated/','/app/etc/env.php'} --dry-run /home/site/ /home/site2/
/var/
...不排除该目录。
但是,如果我这样做:
rsync -avzhe --exclude={'/ignore/','/var/','/generated/','/app/etc/env.php'} --dry-run /home/site/ /home/site2/
一切都按预期工作,除了/ignore/
目录是假的。似乎在使用exclude={}
语法时,第一个值被忽略了。
我究竟做错了什么?
解决方案
你的代码是:
rsync -avzhe --exclude={'/var/','/generated/','/app/etc/env.php'} [...]
是{}
bash 语法。展开后命令行变为:
rsync -avzhe --exclude=/var/ --exclude=/generated/ [...]
扩展rsync
选项给出:
rsync -a -v -z -h -e --exclude=/var/ --exclude=/generated/ [...]
该rsync
选项-e
定义为:
-e, --rsh=COMMAND specify the remote shell to use
从这里我们可以看到,后面的第一个参数-e
被用作COMMAND
(而不是被视为排除规则)。您正在执行本地复制,因此未使用此选项/参数对。如果您一直在执行远程复制,您会看到如下错误:rsync: Failed to exec --exclude=/var/
解决方案是指定一个COMMAND
for-e
或不使用它。
推荐阅读
- functional-programming - 在 SML 中获取子树的问题
- c++ - 在这个构造函数中 initializer_list 允许什么样的初始化?
- weblogic - 找不到 weblogic.jms.common.ResourceAllocationException 的 jar
- php - PHP中降低矩阵顺序的有效方法
- javascript - 如何隐藏和显示链接栏下的内容?
- javascript - 获取火基函数的平均值,找到所需节点的平均值
- python - 100s后IIS wfastcgi django请求超时,如何让它更长?
- spring-boot - GRPC 在 Cloud Foundry 中如何工作?GoRouter 不支持 HTTP2
- bash - 如何使用特定列号(不是字段值)输出这些数据?
- javascript - 如何从用户那里获取目录的名称,然后使用 node.js 创建它?