rsync未按预期复制文件:EC2到本地增量同步失败排查
排查rsync仅输出未执行增量同步的问题
嘿,我来帮你捋捋这个rsync只输出不干活的问题!这种情况我在日常运维里碰到过好多次,大概率是命令参数、路径或者权限的小细节没处理对,咱们一个个排查:
误加了模拟运行参数
rsync有个--dry-run(简称-n)参数,作用是模拟同步过程、输出要执行的操作但不实际修改文件。先检查你的命令里有没有加这个参数——如果有的话,删掉它就能让rsync真正执行同步了。比如你可能写了:rsync -avn ec2-user@你的EC2IP:/var/www/html/production/wp-content/uploads/ /users/myusername/dev/myproject/wp-content/uploads/把
-n去掉就好。路径末尾的斜杠踩坑
rsync对路径末尾的/敏感度拉满:- 源路径加
/:同步目录内的所有文件到目标路径 - 源路径不加
/:会把整个源目录复制到目标路径下
虽然这个不会直接导致不执行,但如果你的输出里全是“创建目录”的信息,那大概率是路径写法不对。确保源路径是/var/www/html/production/wp-content/uploads/(带末尾斜杠),目标路径同理。
- 源路径加
本地目录权限不足
检查本地的/users/myusername/dev/myproject/wp-content/uploads/有没有写入权限。如果rsync没有权限写入本地目录,它只会输出要同步的文件列表,但实际无法完成复制。你可以先在这个目录里手动创建一个测试文件验证权限,必要时用sudo运行rsync(不过尽量用自己的用户权限,避免后续权限混乱)。SSH连接的隐性问题
虽然rsync输出了内容,但有可能是SSH连接在等待认证却没显示出来——比如你没配置免密登录,rsync在后台等你输密码,但你看不到提示。先测试SSH连接:ssh ec2-user@你的EC2IP,确保能正常登录,最好配置免密登录(把本地公钥传到EC2的~/.ssh/authorized_keys里),这样rsync能顺利完成传输。
给你一个标准的增量同步命令示例,你可以参考调整:
rsync -avz --delete ec2-user@你的EC2IP:/var/www/html/production/wp-content/uploads/ /users/myusername/dev/myproject/wp-content/uploads/
-a:归档模式,包含递归同步、保留文件权限/时间戳等,是增量同步的核心参数-z:压缩传输,适合跨服务器同步大文件,节省带宽--delete:可选参数,删除本地存在但EC2端已删除的文件,保持两端完全一致(不需要的话可以去掉)
内容的提问来源于stack exchange,提问作者JasonGenX
相关产品推荐
相关产品推荐

