【问题标题】:Deploy breaks when running 'find' on a directory with space in between name在名称之间有空格的目录上运行“查找”时部署中断
【发布时间】:2015-07-27 05:32:17
【问题描述】:

我们最近遇到了一个问题,其中使用了带有空格的目录之一,并且当我们在目录上递归运行 find 时。它会在找到有空间的目录时中断,并且不会继续进行部署。下面是 cap deploy 的截图:-

* 执行“sudo -p 'sudo 密码:' find /srv/vhosts/static_cap -type d | xargs sudo -p 'sudo 密码:'chmod -R 755” 服务器:[“web00.xx.com”] [web00.xx.com] 执行命令 [web01.xx.com] 执行命令 ** [out :: web00.xx.com] ** [out :: web01.xx.com] ** [out :: web00.xx.com] chmod:无法访问 `/srv/vhosts/static_cap/public_uploads/xx/0.9/90/Color' ** [out :: web00.xx.com] : 没有这样的文件或目录 ** [out :: web00.xx.com] chmod: 无法访问 `Id': 没有这样的文件或目录 命令在 1133 毫秒内完成 失败:“sh -c 'sudo -p '\\''sudo 密码:'\\'' find /srv/vhosts/static_cap -type d | xargs sudo -p '\\''sudo 密码:'\\' web00.buzzaa.com 上的“chmod -R 755”

它试图运行 find 的目录看起来像这样:-

xx@web00:~$ ls -ld /srv/vhosts/xx_cap/xx/0.9/90/Color\Id/ drwxr-xr-x+ 2 root webadmins 4096 Jun 11 07:26 /srv/vhosts/xx_cap/xx/0.9/90/Color Id/

有没有办法可以将此目录名称作为一个而不是在正则表达式字符处中断?

【问题讨论】:

    标签: regex deployment find capistrano


    【解决方案1】:

    似乎 find 命令将每个带有空格分隔符的目录视为一个单独的目录,这就是为什么它将“Color”和“Id”作为两个不同的目录。好吧,这也是 Capistrano 2.x 中的一个已知问题,并且发生在查找命令 https://github.com/capistrano/capistrano/issues/300 中。 我的情况是只更改目录中所有文件的所有权,所以我处理的方式是简单地调用 chown 命令而不是使用管道查找:-

    任务:nimbuzz_bef_prem 做 交易做 运行“#{sudo} chmod -R 755 #{deploy_to}” 运行“#{sudo} chown -R www-data:xyz #{deploy_to}” 结尾 结束

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 2018-12-20
      • 2019-04-02
      • 1970-01-01
      • 2014-02-20
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多