You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rsync同步生产服务器文件:设置组权限及解决参数报错

解决rsync同步时设置用户组和权限的问题

首先,你遇到的no matches found: --usermap=*:www-data错误,根源是shell的通配符解析:当你在命令里写*时,bash会自动尝试用它匹配当前目录下的文件,如果没有找到匹配项,就会抛出这个错误。解决这个问题很简单,把带*的参数用单引号或双引号包裹,让shell直接把*传递给rsync而不是自己解析。

不过其实你不需要用到--usermap和--groupmap这么复杂的选项,rsync的--chown参数就能直接帮你把所有同步的文件和目录的组统一设置为www-data,而且是递归生效的。结合你的权限需求,我给你整理了两个可行的方案:

方案1:用--chown直接设置组(推荐)

这个方法更简洁,也更容易理解。注意要去掉-og选项(这个选项是保留源文件的所有者和组信息,和你要统一设置组的需求冲突),同时用--chown=:www-data指定目标组为www-data:

rsync -rvp --chown=:www-data --chmod=u+rwx,g+rwx,o=rx public/ myuser@123.12.12.123:/var/www/mysite

参数说明:

  • -r:递归同步目录
  • -v:显示同步过程
  • -p:保留源文件的权限(但会被--chmod覆盖,如果你需要强制设置权限,这个选项可以保留)
  • --chown=:www-data:把所有目标文件的组设置为www-data(冒号前留空表示不修改用户)
  • --chmod=u+rwx,g+rwx,o=rx:强制设置用户、组、其他用户的权限

方案2:修复--groupmap的引号问题

如果你坚持要用--groupmap,只需要把参数用单引号包裹,避免shell解析*:

rsync -rvp --groupmap='*:www-data' --chmod=u+rwx,g+rwx,o=rx public/ myuser@123.12.12.123:/var/www/mysite

额外注意事项

  • 确保你的rsync版本是3.1.0或以上:--chown和--groupmap在远程同步中的支持是从这个版本开始的。如果你的rsync版本太低,可以用rsync --version查看,必要时升级rsync。
  • 验证结果:同步完成后,登录目标服务器执行ls -l /var/www/mysite,检查文件的组是否为www-data,权限是否符合u+rwx,g+rwx,o=rx的要求。
  • 如果rsync版本无法升级,也可以分两步操作:先用你原来的命令同步文件,然后在目标服务器执行以下命令补全组和权限设置:
    sudo chgrp -R www-data /var/www/mysite
    sudo chmod -R g+rwx /var/www/mysite
    

内容的提问来源于stack exchange,提问作者Harrison Cramer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:37:35