
比如在服务器之间同步数据啊,备份啊,我们常用的工具是rsync,具体使用 `rsync` 的步骤参考如下(抛砖引玉)。
1. 配置SSH 免密登录配置
在源服务器生成 SSH 密钥(若未生成):
#bashssh-keygen -t rsa
将公钥复制到目标服务器:
#bashssh-copy-id -i xxx.pub 用户名@目标服务器IP
输入目标服务器密码后,后续 `rsync` 无需重复验证。
2. 基本 `rsync` 命令格式
#bashrsync [选项] 源路径 目标路径
- `-a`:归档模式(保留权限、属性等,相当于 `-rlptgoD`)。
- `-v`:显示详细传输信息。
- `-z`:压缩传输数据,节省带宽。
- `-P`:显示进度并支持断点续传(等同于 `--partial --progress`)。
- `--delete`:删除目标端多余文件(谨慎使用!)。
- `--exclude="模式"`:排除指定文件/目录。
- `--bwlimit=KBPS`:限制传输带宽(如 `--bwlimit=1000` 表示 1MB/s)。
- `-e "ssh -p 端口号"`:指定 SSH 端口(默认 22)。
3. 常见场景示例
示例 1:本地同步到远程
#bashrsync -avz /本地/目录/ 用户名@远程IP:/目标/目录/
注意斜杠:源路径末尾的 `/` 表示同步目录内容,否则同步目录本身。
示例 2:远程同步到本地
#bashrsync -avz 用户名@远程IP:/远程/目录/ /本地/目录/
示例 3:排除特定文件/目录
#bashrsync -avz --exclude="*.log" --exclude="tmp/" /源/目录/ 用户@远程IP:/目标/目录/
示例 4:启用 `--delete` 严格同步
#bashrsync -avz --delete /源/目录/ 用户@远程IP:/目标/目录/
示例 5:指定 SSH 端口
#bashrsync -avz -e "ssh -p 2222" /源/目录/ 用户@远程IP:/目标/目录/
4. 安全操作建议
测试命令:使用 `--dry-run` 模拟运行,避免误操作:
#bashrsync -avzn --dry-run /源/目录/ 用户@远程IP:/目标/目录/
增量同步:`rsync` 默认仅传输变化部分,适合频繁同步。
日志记录:添加 `--log-file=路径` 记录同步详情。
5. 故障排查
权限问题:确保目标目录可写(检查权限或使用 `sudo`)。
连接失败:检查防火墙、SSH 端口及网络连通性。
文件不一致:用 `diff -r 目录1 目录2` 或再次运行 `rsync --dry-run` 对比。




