首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Rsync(远程同步):Linux 最常用的文件复制与同步工具

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

作者头像
一根头发丝的宽度
发布2026-05-06 19:21:05
发布2026-05-06 19:21:05
2940
举报

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

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

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

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

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

代码语言:javascript
复制
# 基础格式(归档+压缩+进度显示)
rsync -avzP 源路径 目标路径

常用选项

选项

作用

-v

显示详细传输过程

-r

递归复制目录(不保留元数据)

-a

归档模式(保留所有文件属性)

-z

传输时压缩数据

-h

人性化显示数字大小

-P

显示实时进度条


🚀 核心优势对比表

特性

Rsync

传统 SCP

传输效率

✅ 增量同步(仅传差异部分)

❌ 全文件传输

带宽控制

✅ --bwlimit 限速

❌ 不支持

属性保留

✅ 权限/时间戳/所有者

❌ 部分丢失

断点续传

✅ -P 选项自动续传

❌ 重新传输

安全传输

✅ SSH 隧道加密

✅ SSH 加密


📦 基础操作篇

1. 本地文件同步

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

代码语言:javascript
复制
rsync -zvh Python-3.13.4.tgz /tmp/backups/
# 将 Python-3.13.4.tgz 同步到 /tmp/backups
2. 本地目录同步(保留属性)

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

代码语言:javascript
复制
rsync -avzh music/ oneh@192.168.2.100:/home/oneh/
# 递归同步整个目录(保留属性)
3. 远程 → 本地目录同步
代码语言:javascript
复制
rsync -azvh oneh@192.168.2.100:/home/oneh/ /tmp/music

🌐 远程操作篇

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

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

代码语言:javascript
复制
rsync -avzhe ssh music/ oneh@192.168.2.100:/home/oneh/backup_music
5. 远程文件 → 本地(带进度条)

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

代码语言:javascript
复制
rsync -avzhe ssh --progress oneh@192.168.2.100:/home/oneh/backup_music /home/oneh/backup_music
6. SSH 密钥免密同步(安全推荐)
代码语言:javascript
复制
# 先配置密钥:ssh-keygen + ssh-copy-id
rsync -avzhe ssh /source user@IP:/dest  

⚙️ 高级技巧篇

7. 智能文件过滤
代码语言:javascript
复制
# 包含 .c 排除 .h:
rsync -avz --include='*.c' --exclude='*.h' /home/oneh/Python-3.13.4/Python/ oneh@192.168.2.100:/home/oneh/Python
8. 目标端清理源端已删除文件

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

代码语言:javascript
复制
rsync -avz --delete /home/oneh/music/ oneh@192.168.2.100:/home/oneh/backup_music/
9. 传输后自动删除源文件

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

代码语言:javascript
复制
rsync --remove-source-files -avzh data.log oneh@192.168.2.100:/home/oneh/backup/
10. 空运行测试(安全防护)

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

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

代码语言:javascript
复制
rsync --dry-run -avz hello.py oneh@192.168.2.100:/home/oneh/

🛡️ 企业级场景方案

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

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

代码语言:javascript
复制
rsync --bwlimit=5000 -avzh Python-3.13.4.tgz oneh@192.168.2.100:/home/oneh/ 
12. 故障恢复传输
代码语言:javascript
复制
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+ 高级参数

下一步实践

代码语言:javascript
复制
# 生成测试环境
mkdir -p test/{src,dest} && touch test/src/file{1..100}.txt
# 体验实时同步:
watch -n 1 "rsync -avz test/src/ test/dest/ | grep 'sent'"
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一根头发丝的宽度 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀 核心优势对比表
  • 📦 基础操作篇
    • 1. 本地文件同步
    • 2. 本地目录同步(保留属性)
    • 3. 远程 → 本地目录同步
  • 🌐 远程操作篇
    • 4. 本地 → 远程目录(SSH 加密)
    • 5. 远程文件 → 本地(带进度条)
    • 6. SSH 密钥免密同步(安全推荐)
  • ⚙️ 高级技巧篇
    • 7. 智能文件过滤
    • 8. 目标端清理源端已删除文件
    • 9. 传输后自动删除源文件
    • 10. 空运行测试(安全防护)
  • 🛡️ 企业级场景方案
    • 11. 带宽限速(避免网络阻塞)
    • 12. 故障恢复传输
  • 📊 参数速查表
  • 💎 结语与进阶建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档