首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >rsync,没有现有迁移工具时的救星!

rsync,没有现有迁移工具时的救星!

作者头像
ICT系统集成阿祥
发布2025-10-11 13:01:03
发布2025-10-11 13:01:03
1700
代码可运行
举报
文章被收录于专栏:数通数通
运行总次数:0
代码可运行

rsync是一个功能强大的文件同步和传输工具,广泛用于Unix/Linux系统。它通过高效的差分算法仅传输变化部分,特别适合大文件和频繁更新的场景。下面我将从基本语法、常用选项、高级技巧到实际应用场景全面介绍rsync命令。

一、基本语法与核心选项


1. 基本语法格式

rsync命令的基本语法分为本地同步和远程同步两种格式:

本地同步‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync [选项] 源路径 目标路径

远程同步‌(通过SSH协议):

代码语言:javascript
代码运行次数:0
运行
复制
rsync [选项] 源路径 [用户@]远程主机:目标路径
rsync [选项] [用户@]远程主机:源路径 目标路径

远程同步‌(通过rsync守护进程协议):

代码语言:javascript
代码运行次数:0
运行
复制
rsync [选项] rsync://远程主机模块名/[目标路径]

2. 常用选项详解

选项

功能描述

使用场景

-a

归档模式(相当于-rlptgoD组合)

保留文件所有属性,适合备份

-v

显示详细同步过程

调试和查看传输详情

-z

压缩传输文件

减少网络传输量

-r

递归同步子目录

同步目录结构

-h

人类可读格式显示

更直观查看文件大小

-P

显示进度和续传功能

大文件传输时监控

--delete

删除目标中源不存在的文件

保持完全同步(慎用)

--exclude

排除匹配模式的文件/目录

选择性同步

--dry-run

模拟执行不实际同步

测试命令正确性

-a归档模式实际上是多个选项的组合:

  • -r:递归同步目录及其子目录
  • -l:保留符号链接
  • -p:保留文件权限
  • -t:保留时间戳
  • -g:保留属组信息
  • -o:保留属主信息
  • -D:保留设备文件和特殊文件

二、基础使用示例


1. 本地文件/目录同步

基本目录同步‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -av /data/source/ /data/backup/
  • 末尾斜杠/表示同步目录内的内容,目标目录不存在时会自动创建
  • 若源路径不带斜杠(如/data/source),目标目录会创建以source为名的子目录

保留所有属性并显示详细过程‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avh --progress /source/dir/ /backup/dir/
  • -h:人类可读格式
  • --progress:显示传输进度

2. 远程同步(通过SSH)

将本地目录同步到远程服务器‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz -e ssh /local/path/ user@remote:/remote/path/
  • -e ssh:指定使用SSH协议(可省略,默认使用SSH)
  • -z:压缩传输,减少网络流量

从远程服务器同步到本地‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz user@remote:/remote/path/ /local/path/

3. 增量备份与删除处理

保持目标与源完全一致(删除多余文件)‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -av --delete /source/ /destination/
  • --delete会删除目标目录中不存在于源目录中的文件
  • 使用前建议先用--dry-run测试

排除特定文件/目录‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -av --exclude='*.log' --exclude='temp/' /source/ /destination/
  • 支持通配符*和?
  • 也可将排除规则写入文件,用--exclude-from=文件指定

三、高级用法与技巧


1. 安全与限速

限制带宽使用(单位KB/s)‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz --bwlimit=1000 /source/ user@remote:/destination/
  • 避免占用全部网络带宽
  • 适合生产环境或带宽受限场景

使用SSH指定端口‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz -e 'ssh -p 2222' /source/ user@remote:/destination/

2. 高效同步策略

部分传输与恢复‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz --partial /source/ user@remote:/destination/
  • --partial保留部分传输的文件
  • 中断后可继续传输,无需重新开始

批量同步大量小文件‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avW /source/ /destination/
  • -W:禁用增量检查,直接复制整个文件
  • 适合大量小文件场景(如源码目录)

3. 实用技巧

模拟执行(测试命令)‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avn /source/ /destination/
  • -n或--dry-run:只显示将执行的操作而不实际执行
  • 避免误操作的重要检查步骤

同步后校验文件完整性‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avc /source/ /destination/
  • -c:基于文件内容校验(而非大小和时间戳)
  • 确保数据完全一致,但会增加CPU开销

四、典型应用场景


1. 定期数据备份

每日增量备份脚本示例‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz --delete --link-dest=/backup/previous/ /data/ /backup/current/
  • --link-dest:硬链接未修改文件,节省空间
  • 配合cron可实现自动化备份

2. 网站部署与更新

同步网站目录到生产服务器‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz --exclude='config.php' --exclude='tmp/' \
/var/www/dev/ user@production:/var/www/html/
  • 排除配置文件和环境特定目录
  • 保持开发与生产环境代码一致

3. 集群文件同步

多服务器间保持配置一致‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz --delete /etc/nginx/ server{1..5}:/etc/nginx/
  • 批量同步配置文件到多台服务器
  • 确保集群配置一致性

4. 远程数据镜像

创建远程服务器镜像‌:

代码语言:javascript
代码运行次数:0
运行
复制
rsync -avz --delete -e ssh /local/mirror/ user@remote:/remote/mirror/
  • 保持本地与远程目录完全一致
  • 适合异地备份和灾难恢复

五、注意事项与最佳实践


1‌、路径斜杠区别‌:

  • rsync -av /source /dest:将创建/dest/source目录
  • rsync -av /source/ /dest:将同步/source/*/dest/

2、权限问题‌:

  • 同步需要源路径读权限和目标路径写权限
  • 使用sudo或适当设置目录权限

3、首次同步建议‌:

  • 先使用--dry-run测试
  • 确认无误后再执行实际同步
  • 大文件首次传输可考虑物理介质

‌4、性能优化‌:

  • 内网环境可去掉-z压缩减少CPU开销
  • 大量小文件可考虑先打包再同步
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ICT系统集成阿祥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基本语法与核心选项
  • 1. 基本语法格式
    • 2. 常用选项详解
  • 二、基础使用示例
    • 1. 本地文件/目录同步
  • 保留所有属性并显示详细过程‌:
    • 2. 远程同步(通过SSH)
    • 从远程服务器同步到本地‌:
    • 3. 增量备份与删除处理
  • 三、高级用法与技巧
    • 1. 安全与限速
  • ‌使用SSH指定端口‌:
    • 2. 高效同步策略
    • 3. 实用技巧
  • 四、典型应用场景
  • 1. 定期数据备份
    • 2. 网站部署与更新
    • 3. 集群文件同步
    • 4. 远程数据镜像
  • 五、注意事项与最佳实践
  • 1‌、路径斜杠区别‌:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档