Rsync(远程同步):Linux 最常用的文件复制与同步工具

奥黛丽·逐爱者
2025-07-24 / 0 评论 / 24 阅读 / 正在检测是否收录...

Rsync(远程同步)是Linux/Unix系统中用于远程和本地复制及同步文件和目录的最常用命令。

借助 rsync 命令,可以跨目录、磁盘和网络远程和本地复制及同步数据,执行数据备份,并在两台 Linux 机器之间进行镜像同步。

本文将详细讲解 rsync 命令的部分基本和高级用法,帮助您在基于 Linux 的机器上远程和本地传输文件。

归档模式 | 增量传输 | SSH 加密 | 带宽控制

📢 无需 root 权限 | 本地/远程通用 | 保留文件属性

# 基础格式(归档+压缩+进度显示)
rsync -avzP 源路径 目标路径
图片

常用选项

选项
作用
-v
显示详细传输过程
-r
递归复制目录(不保留元数据)
-a
归档模式(保留所有文件属性)
-z
传输时压缩数据
-h
人性化显示数字大小
-P
显示实时进度条

🚀 核心优势对比表

特性Rsync传统 SCP
传输效率
✅ 增量同步(仅传差异部分)
❌ 全文件传输
带宽控制
✅ --bwlimit 限速
❌ 不支持
属性保留
✅ 权限/时间戳/所有者
❌ 部分丢失
断点续传
✅ -P 选项自动续传
❌ 重新传输
安全传输
✅ SSH 隧道加密
✅ SSH 加密

📦 基础操作篇

1. 本地文件同步

要本地复制或同步文件,可以使用以下命令,该命令将从本地机器的一个位置同步单个文件到另一个位置。

rsync -zvh Python-3.13.4.tgz /tmp/backups/
# 将 Python-3.13.4.tgz 同步到 /tmp/backups
图片

2. 本地目录同步(保留属性)

以下命令将从一台机器上的一个目录将所有文件传输或同步到同一台机器上的另一个目录。

rsync -avzh music/ oneh@192.168.2.100:/home/oneh/
# 递归同步整个目录(保留属性)
图片
图片

3. 远程 → 本地目录同步

rsync -azvh oneh@192.168.2.100:/home/oneh/ /tmp/music
图片

🌐 远程操作篇

4. 本地 → 远程目录(SSH 加密)

使用 rsync,可以借助 SSH进行数据传输。通过 SSH 协议,可以确保数据在加密的连接中传输,从而防止任何人在数据通过互联网传输过程中窃取数据。要通过 SSH 使用 rsync,您可以使用 -e 选项指定远程 shell 命令,通常为 ssh,如下所示。

rsync -avzhe ssh music/ oneh@192.168.2.100:/home/oneh/backup_music
图片

5. 远程文件 → 本地(带进度条)

远程到本地,使用 --progress 显示传输进度条.

rsync -avzhe ssh --progress oneh@192.168.2.100:/home/oneh/backup_music /home/oneh/backup_music
图片

6. SSH 密钥免密同步(安全推荐)

# 先配置密钥:ssh-keygen + ssh-copy-id
rsync -avzhe ssh /source user@IP:/dest  
图片

⚙️ 高级技巧篇

7. 智能文件过滤

# 包含 .c 排除 .h:
rsync -avz --include='*.c' --exclude='*.h' /home/oneh/Python-3.13.4/Python/ oneh@192.168.2.100:/home/oneh/Python
图片
图片

8. 目标端清理源端已删除文件

如果源位置不存在某个文件或目录,但目标位置已经存在该文件/目录,希望在同步过程中删除目标位置的该现有文件/目录。

rsync -avz --delete /home/oneh/music/ oneh@192.168.2.100:/home/oneh/backup_music/
图片
图片

9. 传输后自动删除源文件

假设你有一个主网页服务器和一个数据备份服务器,你创建了每日备份并将其与备份服务器同步,但现在你不想在网页服务器上保留该备份的本地副本。

rsync --remove-source-files -avzh data.log oneh@192.168.2.100:/home/oneh/backup/
图片

10. 空运行测试(安全防护)

如果您是 rsync 的新手,且不确定自己的命令会产生什么具体效果,那么 rsync 可能会对目标文件夹中的内容造成混乱,而要撤销这些操作可能会非常繁琐。

使用此选项不会对文件进行任何修改,并显示命令的输出结果。如果输出结果与您期望的完全一致,则可以从命令中移除‘--dry-run’选项,并在终端中运行。

rsync --dry-run -avz hello.py oneh@192.168.2.100:/home/oneh/
图片

🛡️ 企业级场景方案

11. 带宽限速(避免网络阻塞)

使用--bwlimit选项从一台机器向另一台机器传输数据时,可以设置带宽限制。此选项可帮助我们限制I/O带宽。

rsync --bwlimit=5000 -avzh Python-3.13.4.tgz oneh@192.168.2.100:/home/oneh/ 
图片

12. 故障恢复传输

rsync -avzP --partial /中断文件 目标路径
图片

📊 参数速查表

参数作用示例
-a
归档模式(全属性保留)
rsync -a src/ dest/
-z
传输时压缩
rsync -z data.log remote:
--max-size
限制文件大小
--max-size='100M'
-W
禁用增量传输(全文件)
rsync -W image.iso dest/
--stats
显示传输统计
rsync -a --stats src/ dest/

💎 结语与进阶建议

  1. 灾难防护:重要操作前必加 --dry-run
  2. 性能调优:大文件传输用 -W + --bwlimit 组合
  3. 自动化:搭配 cron 实现定时备份
  4. 深度学习man rsync 查看 50+ 高级参数

✨ 下一步实践

# 生成测试环境
mkdir -p test/{src,dest} && touch test/src/file{1..100}.txt
# 体验实时同步:
watch -n 1 "rsync -avz test/src/ test/dest/ | grep 'sent'"

推荐阅读:
👉 1.在 Linux 系统上绝对不能执行的 10 条命令-很危险的
👉 2.基本的Linux命令,【tail】 命令常用的实用示例,告别海量日志,精准抓取关键信息
👉 3.章节2:基本的Linux命令,【echo】 命令常用的实用示例,Linux终端输出的瑞士军刀!

0

评论 (0)

取消