Linux rsync 命令

Linux 命令大全 Linux 命令大全


什么是 rsync 命令

rsync (Remote Sync) 是 Linux 系统中一个功能强大的文件同步工具,它能够高效地在本地或远程系统之间同步文件和目录。rsync 以其"增量传输"算法著称,只传输源文件和目标文件之间的差异部分,大大提高了文件传输效率。

rsync 的核心特点

  1. 增量同步:仅传输变化的文件部分,节省带宽和时间
  2. 保留属性:可以保持文件权限、时间戳等元数据
  3. 压缩传输:支持数据传输时压缩,减少网络负载
  4. 灵活排除:可以排除特定文件或目录
  5. 远程支持:通过 SSH 安全地同步远程服务器文件

rsync 基本语法

rsync [选项] 源文件 目标文件

常用命令形式

本地同步

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

从本地同步到远程

rsync -avz /local/path/ username@remote_host:/remote/path/

从远程同步到本地

rsync -avz username@remote_host:/remote/path/ /local/path/

rsync 常用选项详解

选项 全称 说明
-a --archive 归档模式,保留所有文件属性(相当于 -rlptgoD)
-v --verbose 显示详细传输信息
-z --compress 传输时压缩数据
-r --recursive 递归复制目录
-l --links 保留符号链接
-p --perms 保留文件权限
-t --times 保留文件修改时间
-g --group 保留文件所属组
-o --owner 保留文件所有者
-D --devices 保留设备文件(仅限超级用户)
-h --human-readable 以人类可读格式输出数字
--progress 显示传输进度
--delete 删除目标中源没有的文件
--exclude=PATTERN 排除匹配 PATTERN 的文件
--include=PATTERN 包含匹配 PATTERN 的文件

rsync 实际应用示例

示例 1:本地目录同步

实例

# 将 /home/user/docs 同步到 /backup/docs,保留所有属性
rsync -av /home/user/docs/ /backup/docs/

注意:源目录后的斜杠 / 很重要:

  • 有斜杠:同步目录内容
  • 无斜杠:同步目录本身

示例 2:远程服务器备份

实例

# 将本地目录同步到远程服务器,使用压缩
rsync -avz /data/backups/ user@example.com:/remote/backups/

示例 3:带排除选项的同步

实例

# 同步但排除 .tmp 文件和 log 目录
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/

示例 4:保持两端完全一致(删除目标端多余文件)

实例

rsync -av --delete /source/ /destination/

rsync 高级用法

1. 使用 SSH 自定义端口

实例

rsync -avz -e 'ssh -p 2222' /local/path/ user@host:/remote/path/

2. 带宽限制(限制为 500KB/s)

实例

rsync -avz --bwlimit=500 /source/ /destination/

3. 部分传输(只传输大于100KB的文件)

实例

rsync -av --min-size=100K /source/ /destination/

4. 定时备份脚本

实例

#!/bin/bash
rsync -avz --delete /important/data/ backup@server:/backups/data/
echo "Backup completed at $(date)" >> /var/log/backup.log

rsync 常见问题解答

Q1: rsync 和 scp 有什么区别?

  • rsync:增量同步,只传输差异部分,适合定期备份
  • scp:每次全量传输,适合一次性文件传输

Q2: 如何恢复中断的 rsync 传输?

使用 --partial 选项保留部分传输的文件:

实例

rsync -av --partial /source/ /destination/

Q3: 如何查看 rsync 将做什么而不实际执行?

使用 -n (dry-run) 选项:

实例

rsync -avn /source/ /destination/

Q4: 如何提高 rsync 传输速度?

  1. 使用 -z 选项启用压缩
  2. 使用 --compress-level=N 调整压缩级别(1-9)
  3. 禁用校验和计算(仅限可信网络):--no-checksum

最佳实践建议

  1. 测试先行:使用 -n 选项先进行模拟运行
  2. 日志记录:添加 --log-file=rsync.log 记录操作
  3. 权限管理:考虑使用 --chmod 统一文件权限
  4. 定时任务:结合 crontab 实现自动备份
  5. 安全传输:始终通过 SSH 进行远程传输

总结

rsync 是 Linux 系统管理员和开发者的必备工具,掌握它可以:

  • 高效完成本地和远程文件同步
  • 实现自动化备份方案
  • 优化网络数据传输
  • 保持文件系统的一致性

通过本文的学习,您应该已经掌握了 rsync 的基本用法和高级技巧。建议在实际工作中多加练习,逐步探索更多 rsync 的强大功能。

Linux 命令大全 Linux 命令大全