Rsync(远程同步)是Linux/Unix系统中用于远程和本地复制及同步文件和目录的最常用命令
借助 rsync 命令,可以跨目录、磁盘和网络远程和本地复制及同步数据,执行数据备份,并在两台 Linux 机器之间进行镜像同步。
本文将详细讲解 rsync 命令的部分基本和高级用法,帮助您在基于 Linux 的机器上远程和本地传输文件。
归档模式 | 增量传输 | SSH 加密 | 带宽控制
📢 无需 root 权限 | 本地/远程通用 | 保留文件属性
# 基础格式(归档+压缩+进度显示)
rsync -avzP 源路径 目标路径
常用选项:
选项 | 作用 |
|---|---|
-v | 显示详细传输过程 |
-r | 递归复制目录(不保留元数据) |
-a | 归档模式(保留所有文件属性) |
-z | 传输时压缩数据 |
-h | 人性化显示数字大小 |
-P | 显示实时进度条 |
特性 | Rsync | 传统 SCP |
|---|---|---|
传输效率 | ✅ 增量同步(仅传差异部分) | ❌ 全文件传输 |
带宽控制 | ✅ --bwlimit 限速 | ❌ 不支持 |
属性保留 | ✅ 权限/时间戳/所有者 | ❌ 部分丢失 |
断点续传 | ✅ -P 选项自动续传 | ❌ 重新传输 |
安全传输 | ✅ SSH 隧道加密 | ✅ SSH 加密 |
要本地复制或同步文件,可以使用以下命令,该命令将从本地机器的一个位置同步单个文件到另一个位置。
rsync -zvh Python-3.13.4.tgz /tmp/backups/
# 将 Python-3.13.4.tgz 同步到 /tmp/backups
以下命令将从一台机器上的一个目录将所有文件传输或同步到同一台机器上的另一个目录。
rsync -avzh music/ oneh@192.168.2.100:/home/oneh/
# 递归同步整个目录(保留属性)


rsync -azvh oneh@192.168.2.100:/home/oneh/ /tmp/music
使用 rsync,可以借助 SSH进行数据传输。通过 SSH 协议,可以确保数据在加密的连接中传输,从而防止任何人在数据通过互联网传输过程中窃取数据。要通过 SSH 使用 rsync,您可以使用 -e 选项指定远程 shell 命令,通常为 ssh,如下所示。
rsync -avzhe ssh music/ oneh@192.168.2.100:/home/oneh/backup_music
远程到本地,使用 --progress 显示传输进度条.
rsync -avzhe ssh --progress oneh@192.168.2.100:/home/oneh/backup_music /home/oneh/backup_music
# 先配置密钥:ssh-keygen + ssh-copy-id
rsync -avzhe ssh /source user@IP:/dest 
# 包含 .c 排除 .h:
rsync -avz --include='*.c' --exclude='*.h' /home/oneh/Python-3.13.4/Python/ oneh@192.168.2.100:/home/oneh/Python


如果源位置不存在某个文件或目录,但目标位置已经存在该文件/目录,希望在同步过程中删除目标位置的该现有文件/目录。
rsync -avz --delete /home/oneh/music/ oneh@192.168.2.100:/home/oneh/backup_music/


假设你有一个主网页服务器和一个数据备份服务器,你创建了每日备份并将其与备份服务器同步,但现在你不想在网页服务器上保留该备份的本地副本。
rsync --remove-source-files -avzh data.log oneh@192.168.2.100:/home/oneh/backup/
如果您是 rsync 的新手,且不确定自己的命令会产生什么具体效果,那么 rsync 可能会对目标文件夹中的内容造成混乱,而要撤销这些操作可能会非常繁琐。
使用此选项不会对文件进行任何修改,并显示命令的输出结果。如果输出结果与您期望的完全一致,则可以从命令中移除‘--dry-run’选项,并在终端中运行。
rsync --dry-run -avz hello.py oneh@192.168.2.100:/home/oneh/

使用--bwlimit选项从一台机器向另一台机器传输数据时,可以设置带宽限制。此选项可帮助我们限制I/O带宽。
rsync --bwlimit=5000 -avzh Python-3.13.4.tgz oneh@192.168.2.100:/home/oneh/ 
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/ |
--dry-run-W + --bwlimit 组合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'"