Linux rsync 命令:文件同步工具

一、什么是 rsync 命令

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

rsync 的核心特点

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

二、rsync 基本语法

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

2.1 常用命令形式

本地同步:

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/

2.2 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 传输速度?

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

最佳实践建议

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

六、总结

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

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

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

  • 全屏阅读F11
  • 打赏支持
  • 快速评论

评论

评论列表

暂无评论

文章目录

    查看评论