【Linux学习】rsync数据传输从入门到精通:超详细教程

rsync 从入门到精通:超详细教程(逐句解析)


一、rsync 是什么?

rsync(Remote Sync)是 Linux/Unix 系统中用于高效同步文件和目录的工具。它通过差异传输算法,仅传输源文件与目标文件的差异部分,大幅减少数据传输量。

1.1 rsync核心特性

  • 增量同步:只同步变化内容
  • 保留属性:权限、时间戳、符号链接等
  • 断点续传:中断后可继续传输
  • 远程同步:支持 SSH、NFS、Rsync 守护进程
  • 压缩传输:减少网络流量

1.2 rsync核心优势对比表

特性rsyncscpFTPNFS
传输方式增量传输(仅变化部分)全量传输全量传输块级读写
效率高(适合大目录)高(局域网)
压缩支持(-z支持(手动)不支持不支持
权限保留支持(-a支持不支持支持
断点续传支持(--partial不支持不支持不支持
安全性SSH 加密SSH 加密明文(FTPS/SFTP 可加密)需配置加密

二、安装 rsync

2.1 Linux 安装命令:

# Debian/Ubuntu
sudo apt install rsync

# CentOS/RHEL
sudo yum install rsync

# Fedora
sudo dnf install rsync

# Arch Linux
sudo pacman -S rsync

三、基础语法详解

3.1 rsync基本语法

rsync [选项] 源路径 目标路径

3.2 路径末尾 / 的影响对比表

命令行为示例结果
rsync -a dir1 dir2/同步 dir1 目录本身dir2/dir1/...
rsync -a dir1/ dir2/同步 dir1 内容dir2/file1, dir2/file2...

3.3 rsync示例命令拆解:

rsync -avz /home/user/docs/ user@remote:/backup/
参数功能说明
-a归档模式(递归、保留权限、时间戳等)
-v详细输出(显示同步过程)
-z压缩传输(减少网络流量)
/home/user/docs/源路径(本地目录)
user@remote:/backup/目标路径(远程服务器目录)

四、关键选项详细解析

4.1 -a(archive):保留文件属性

  • 等价于组合选项:-rlptgoD
    • -r:递归同步目录
    • -l:保留符号链接
    • -p:保留权限
    • -t:保留时间戳
    • -g:保留所属组
    • -o:保留所有者(需 root 权限)
    • -D:保留设备文件和特殊文件

4.2 -v(verbose):显示详细信息

  • 级别控制:
    • -v:显示同步的文件名
    • -vv:显示更多调试信息(如跳过原因)

4.3 -z(compress):压缩传输

  • 仅对远程传输有效,本地同步时关闭压缩更高效。

4.4 --progress:显示进度条

rsync -av --progress source/ dest/

4.5 --delete:删除目标多余文件

  • 危险操作!确保目标目录与源目录完全一致。
rsync -av --delete source/ dest/

4.6 --exclude--include:过滤文件

rsync -av \
  --exclude='*.tmp' \
  --exclude='.git/' \
  source/ dest/

4.7 -u(update):仅同步更新的文件

  • 跳过目标端比源更新的文件。

4.8 --partial:断点续传

  • 保留已传输的部分文件,中断后可继续传输。
rsync -avz --partial source.iso user@remote:/backup/

4.9 常用选项总结表

选项功能是否必要示例
-a归档模式(递归、保留属性)✅ 必须rsync -a source/ dest/
-v详细输出✅ 建议rsync -av source/ dest/
-z压缩传输✅ 网络传输时建议rsync -avz source/ user@remote:/dest/
--progress显示进度条✅ 大文件时建议rsync -av --progress source/ dest/
--delete删除目标多余文件⚠️ 谨慎使用rsync -av --delete source/ dest/
--exclude=PATTERN排除匹配文件✅ 灵活过滤rsync -av --exclude='*.tmp' source/ dest/
--partial断点续传✅ 大文件建议rsync -av --partial file.iso user@remote:/dest/
-n--dry-run模拟运行✅ 测试命令前必须rsync -avn source/ dest/
-e "ssh -p PORT"自定义 SSH 端口✅ 非默认端口时必须rsync -avz -e "ssh -p 2222" source/ user@remote:/dest/

五、本地同步 vs 远程同步

5.1 本地同步(Local)

rsync -av /path/to/source/ /path/to/destination/

5.2 远程同步(Remote)

(1)推送(Push):本地 → 远程
rsync -avz /local/data/ user@remote:/remote/backup/
(2)拉取(Pull):远程 → 本地
rsync -avz user@remote:/remote/data/ /local/backup/

六、高级用法与实战案例

案例 1:增量备份网站目录

rsync -avz \
  --exclude='cache/' \
  --exclude='*.log' \
  /var/www/html/ \
  backup@backup-server:/backups/www-$(date +%F)/

案例 2:限速同步大文件

rsync -avz --bwlimit=1000 /data/large_files/ user@remote:/backup/
  • --bwlimit=1000:限制带宽为 1000 KB/s(约 8 Mbps)

案例 3:断点续传

rsync -avzP --partial /huge_file.iso user@remote:/backup/
  • -P = --partial --progress

案例 4:自定义 SSH 端口

rsync -avz -e "ssh -p 2222" /data/ user@remote:/backup/

七、守护进程模式(Daemon Mode)

7.1 配置文件 /etc/rsyncd.conf

[backup]
path = /srv/backup
comment = Backup Area
read only = no
auth users = backupuser
secrets file = /etc/rsyncd.secrets

7.2 启动服务

rsync --daemon

7.3 客户端同步

rsync -av /data/ backupuser@remote::backup/

八、性能优化技巧

技巧说明
-W全文件复制(跳过差异计算,适合小文件多的场景)
--block-size=8192调整 block 大小(默认 700B)
并行同步使用 parallel 工具分目录同步
关闭压缩本地同步时去掉 -z 提高速度

九、常见问题与解决方案

Q1:Permission denied?

  • 检查目标目录写权限
  • 若使用 -o,需 root 权限
  • SSH 用户是否有权限写入远程目录?

Q2:文件未同步?

  • 使用 -n -v 先 dry-run 测试
  • 检查 --exclude 是否误排除
  • 时间戳是否一致?(用 -I 强制同步)

Q3:速度慢?

  • 关闭压缩(去掉 -z
  • 使用 -W 跳过差异算法
  • 检查网络带宽或磁盘 I/O

十、总结:rsync 使用模板

场景推荐命令说明
日常备份rsync -av --delete source/ dest/保留属性并删除多余文件
网络传输rsync -avz source/ user@host:dest/压缩传输
安全测试rsync -avn --delete source/ dest/模拟运行前测试
大文件续传rsync -avzP --partial file user@host:path/支持断点续传
精细过滤rsync -av --include='*.jpg' --exclude='*' source/ dest/仅同步指定文件类型

附录:常用选项速查表

选项说明示例
-a归档模式(递归+保留属性)rsync -a source/ dest/
-v详细输出rsync -av source/ dest/
-z压缩传输rsync -avz source/ user@remote:/dest/
-n模拟运行rsync -avn source/ dest/
--delete删除目标多余文件rsync -av --delete source/ dest/
--exclude排除文件rsync -av --exclude='*.tmp' source/ dest/
-P显示进度 + 断点续传rsync -avP source/ dest/
-e "ssh -p 2222"自定义 SSH 端口rsync -avz -e "ssh -p 2222" source/ user@remote:/dest/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值