快速参考:rsync是 Linux 系统中最强大的文件同步和传输工具。它采用独有的增量传输算法——只传输源和目标之间的差异部分,极大节省带宽和时间。支持本地同步、远程推送/拉取、SSH 隧道传输、daemon 模式,并具备断点续传、文件过滤、带宽限制、删除多余文件等生产级特性。是系统备份、文件分发、网站部署、数据迁移的首选工具。
🔰 简介
rsync由 Andrew Tridgell 和 Paul Mackerras 开发,其核心创新在于 “rsync 算法”:将文件分块,计算每块的校验和,只传输源端和目标端不同的块。这意味着对一个 10GB 文件,即使只改动了最后 1KB,也只传输那 1KB。
六种使用模式
模式
语法
说明
本地到本地
rsync [选项] 源 目标
同主机内目录/文件同步
本地到远程
rsync [选项] 源 用户@主机:目标
Push:推送文件到远程
远程到本地
rsync [选项] 用户@主机:源 目标
Pull:从远程拉取文件
远程到远程
rsync [选项] 用户@主机A:源 用户@主机B:目标
通过本地中转
Daemon 模式
rsync [选项] 用户@主机::模块/路径
直接连接 rsync 服务
SSH 隧道
rsync [选项] -e ssh 源 目标
通过 SSH 加密传输
安装位置
# 查看 rsync 路径和版本whichrsync# 输出:/usr/bin/rsyncrsync--version|head-3# 输出:# rsync version 3.1.2 protocol version 31# Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.# Web site: http://rsync.samba.org/# 安装(大多数发行版默认安装)# CentOS/RHELsudoyuminstallrsync# CentOS/RHEL 8+sudodnfinstallrsync# Debian/Ubuntusudoaptinstallrsync# 查看配置文件路径ls/etc/rsyncd.conf2>/dev/null||echo"daemon 模式配置文件不存在(需手动创建)"
📖 语法
rsync [选项] 源 目标
源和目标格式:
格式
说明
/path/to/dir
本地路径
user@host:/path
远程路径(SSH 方式)
user@host::module/path
远程路径(daemon 方式)
rsync://user@host/module/path
URL 格式(daemon 方式)
[USER@]HOST::SRC [USER@]HOST::DEST
远程到远程(本地中转)
⚙️ 选项
核心选项(必须掌握)
选项
说明
-a, --archive
归档模式(最常用!)等价于-rlptgoD
-v, --verbose
详细输出
-z, --compress
传输时压缩数据
-P
等价于--partial --progress(断点续传 + 进度)
-h, --human-readable
人类可读的大小格式(如 1.5GB)
-n, --dry-run
模拟运行(预览将要进行的操作,不实际传输)
-a 归档模式的分解
子选项
说明
-r, --recursive
递归目录
-l, --links
保留符号链接
-p, --perms
保留权限
-t, --times
保留修改时间
-g, --group
保留组
-o, --owner
保留所有者(需 root)
-D
等价于--devices --specials(保留设备文件和特殊文件)
高级选项
选项
说明
--delete
⚠️ 小心使用删除目标端多余的文件(镜像同步)
--delete-excluded
同时删除被排除的文件
--delete-before
传输前先删除(节省目标空间)
--exclude 模式
排除匹配的文件/目录
--exclude-from 文件
从文件读取排除模式列表
--include 模式
包含匹配的文件/目录
--bwlimit 速率
限制传输带宽(单位 KB/s,如--bwlimit=10000即 10MB/s)
-e, --rsh 命令
指定远程 Shell(如-e "ssh -p 2222")
--partial
保留未完整传输的文件(断点续传基础)
--progress
显示传输进度
--stats
传输完成后显示统计信息
-x, --one-file-system
不跨越文件系统边界
-u, --update
跳过目标端更新的文件
--max-size 大小
限制最大文件大小
--min-size 大小
限制最小文件大小
--remove-source-files
传输成功后删除源文件(相当于移动)
--chmod 权限
设置目标文件权限(如--chmod=D0755,F0644)
--log-file 文件
将输出记录到日志文件
💡 示例
示例 1:本地目录同步(基本用法)
# 准备工作:创建测试目录和文件mkdir-p/tmp/rsync_test/sourcecd/tmp/rsync_test/sourcemkdir-pdir1 dir2 dir3echo"Hello from file1">file1.txtecho"Hello from file2">file2.txtecho"Hello from file3">dir1/file3.txtecho"Config data">config.conf# 查看源目录结构find/tmp/rsync_test/source-typef# 输出:# /tmp/rsync_test/source/file1.txt# /tmp/rsync_test/source/file2.txt# /tmp/rsync_test/source/config.conf# /tmp/rsync_test/source/dir1/file3.txt# 基本同步(保留目录结构、权限、时间戳)rsync-av/tmp/rsync_test/source/ /tmp/rsync_test/dest/# 输出:# sending incremental file list# ./# config.conf# file1.txt# file2.txt# dir1/# dir1/file3.txt# dir2/# dir3/## sent 558 bytes received 124 bytes 1,364.00 bytes/sec# total size is 58 speedup is 0.09# 验证目标目录ls-la/tmp/rsync_test/dest/# 输出:# drwxr-xr-x 5 user group 100 Jun 14 14:30 .# drwxr-xr-x 4 user group 80 Jun 14 14:30 ..# -rw-r--r-- 1 user group 13 Jun 14 14:30 config.conf# drwxr-xr-x 2 user group 40 Jun 14 14:30 dir1# drwxr-xr-x 2 user group 40 Jun 14 14:30 dir2# drwxr-xr-x 2 user group 40 Jun 14 14:30 dir3# -rw-r--r-- 1 user group 18 Jun 14 14:30 file1.txt# -rw-r--r-- 1 user group 18 Jun 14 14:30 file2.txt
示例 2:推送到远程服务器
# 将本地 /data/web/ 推送到远程服务器的 /var/www/rsync-avz/data/web/ user@web-server:/var/www/# 输出:# sending incremental file list# ./# index.html# style.css# script.js# images/# images/logo.png# images/banner.jpg## sent 2,456,789 bytes received 156 bytes 491,389.00 bytes/sec# total size is 2,450,000 speedup is 1.00# 带进度条的推送(推荐日常使用)rsync-avzP/data/web/ user@web-server:/var/www/# 输出:# sending incremental file list# ./# index.html# 3,456 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=4/6)# style.css# 12,789 100% 12.49MB/s 0:00:00 (xfr#2, to-chk=3/6)# script.js# 45,678 100% 22.30MB/s 0:00:00 (xfr#3, to-chk=2/6)# images/logo.png# 234,567 100% 19.12MB/s 0:00:00 (xfr#4, to-chk=1/6)# images/banner.jpg# 2,160,345 100% 17.85MB/s 0:00:00 (xfr#5, to-chk=0/6)## sent 2,458,912 bytes received 115 bytes 4,918,054.00 bytes/sec# total size is 2,450,000 speedup is 1.00# 测试大文件增量同步(第二次传输几乎瞬间完成)rsync-avh--stats/data/web/ user@web-server:/var/www/# 输出:# sending incremental file list## Number of files: 6 (reg: 5, dir: 1)# Number of created files: 0# Number of deleted files: 0# Number of regular files transferred: 0 # 没有文件被传输!# Total file size: 2.39M bytes# Total transferred file size: 0 bytes # 传输了 0 字节!# Literal data: 0 bytes# Matched data: 0 bytes# File list size: 0# File list generation time: 0.001 seconds# File list transfer time: 0.000 seconds# Total bytes sent: 205# Total bytes received: 108## sent 205 bytes received 108 bytes 626.00 bytes/sec# total size is 2,450,000 speedup is 7,827.48
示例 3:从远程拉取到本地
# 从远程服务器拉取数据rsync-avzuser@db-server:/var/backups/ /local/backups/# 输出:# receiving incremental file list# ./# db_backup_20260601.sql.gz# db_backup_20260602.sql.gz# db_backup_20260603.sql.gz## sent 45 bytes received 125,678,901 bytes 8,378,596.40 bytes/sec# total size is 125,600,000 speedup is 1.00# 拉取并显示进度rsync-avzPuser@db-server:/var/backups/db_backup_20260614.sql.gz /local/backups/# 输出:# receiving incremental file list# db_backup_20260614.sql.gz# 125,678,901 100% 35.67MB/s 0:00:03 (xfr#1, to-chk=0/1)## sent 30 bytes received 125,722,456 bytes 25,144,497.20 bytes/sec# total size is 125,600,000 speedup is 1.00# 通过非标准 SSH 端口拉取rsync-avz-e"ssh -p 2222"user@db-server:/data/ /local/data/
Windows Defender终极性能优化指南:5步彻底解决系统资源瓶颈 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-control …