rsync 文件同步速查表
rsync 是功能强大的文件同步和传输工具,支持本地和远程高效增量同步。本速查表涵盖基础用法、SSH 远程同步、过滤规则以及高级选项,助力数据备份与迁移。
基础用法 (Basic Usage)
rsync 基础命令格式:rsync [选项] <源> <目标>
### 本地同步
``yaml
# 基本的本地目录同步(归档模式,保留权限和时间戳)
rsync -a /path/to/source/ /path/to/destination/
# 显示传输进度 rsync -av /data/ /backup/
# 压缩传输以减少带宽 rsync -az /data/ /backup/
# 显示人类可读的数值 rsync -ah /data/ /backup/
# 组合常用选项:归档+压缩+进度+可读
rsync -avzP /data/ /backup/
`
### 增量传输
`yaml
# 只传输差异部分(rsync 默认行为)
rsync -av /data/ /backup/
# 删除目标端多余文件(保持两端完全一致) rsync -av --delete /data/ /backup/
# 传输后删除源文件(移动操作)
rsync -av --remove-source-files /data/ /backup/
`
### 检查与校验
`yaml
# 模拟运行(不实际传输)
rsync -av --dry-run /data/ /backup/
# 基于校验和判断文件变化(而非大小+时间)
rsync -avc /data/ /backup/
`
远程同步 (Remote Sync via SSH)
通过 SSH 协议在本地与远程主机之间同步文件。
### 推送到远程
`yaml
# 本地推送到远程(默认 SSH)
rsync -av /local/data/ user@remote:/remote/backup/
# 指定 SSH 端口 rsync -av -e "ssh -p 2222" /local/data/ user@remote:/remote/backup/
# 限制带宽(单位 KB/s)
rsync -av --bwlimit=1000 /local/data/ user@remote:/remote/backup/
`
### 从远程拉取
`yaml
# 从远程拉取到本地
rsync -av user@remote:/remote/backup/ /local/data/
# 使用 SSH 密钥
rsync -av -e "ssh -i ~/.ssh/deploy_key" user@remote:/remote/backup/ /local/data/
`
### SSH 高级配置
`yaml
# 设置 SSH 超时(秒)
rsync -av -e "ssh -o ConnectTimeout=10" /local/data/ user@remote:/remote/backup/
# 自定义 SSH 压缩级别
rsync -avz -e "ssh -C" /local/data/ user@remote:/remote/backup/
`
过滤规则 (Filter Rules)
使用包含/排除规则精确控制同步内容。
### 排除与包含
`yaml
# 排除特定文件或目录
rsync -av --exclude='*.log' /data/ /backup/
# 排除多个模式 rsync -av --exclude='*.log' --exclude='node_modules/' --exclude='.git/' /project/ /backup/
# 先包含再排除(白名单模式) rsync -av --include='*/' --include='*.py' --exclude='*' /project/ /backup/
# 从文件读取排除规则
rsync -av --exclude-from=exclude.txt /data/ /backup/
`
### 包含模式
`yaml
# 只包含特定文件类型
rsync -av --include='*/' --include='*.conf' --exclude='*' /etc/ /backup/
# 包含单个文件
rsync -av --include='config.yml' --exclude='*' /project/ /backup/
`
### 文件列表同步
`yaml
# 从文件读取要同步的文件列表
rsync -av --files-from=filelist.txt /data/ /backup/
`
高级选项 (Advanced Options)
### 硬链接增量备份
`yaml
# 基于之前的备份做硬链接增量备份
rsync -av --link-dest=/backup/prev-backup /data/ /backup/curr-backup/
`
### 文件属性管理
`yaml
# 保留所有文件属性
rsync -av --owner --group /data/ /backup/
# 禁止保留属主 rsync -av --no-owner /data/ /backup/
# 设置文件权限(chmod 模式)
rsync -av --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r /data/ /backup/
`
### 大小与超时限制
`yaml
# 只同步小于指定大小的文件
rsync -av --max-size=100M /data/ /backup/
# 只同步大于指定大小的文件 rsync -av --min-size=1K /data/ /backup/
# 设置 I/O 超时(秒)
rsync -av --timeout=30 /data/ /backup/
`
### rsync 守护进程模式
`yaml
# 使用 rsync 守护进程协议(rsync://)
rsync -av rsync://rsync.example.com/mirror/ /local/mirror/
# 查看守护进程模块列表
rsync rsync://rsync.example.com/
`
### rsyncd.conf 配置
`yaml
# /etc/rsyncd.conf 示例
# [backup]
# path = /var/backup
# comment = Backup Directory
# read only = no
# auth users = backupuser
# secrets file = /etc/rsyncd.secrets
# 连接到受保护的 rsync 守护进程 rsync -av rsync://backupuser@rsync.example.com/backup/ /local/backup/ ``
基础用法(8)
| 命令 | 难度 | ||
|---|---|---|---|
rsync -a /path/to/source/ /path/to/destination/归档模式同步目录(保留权限、时间戳等) | 基础 | rsync -a /data/ /backup/ | |
rsync -av /data/ /backup/归档模式并显示详细信息 | 基础 | rsync -av /data/ /backup/ | |
rsync -az /data/ /backup/归档模式并压缩传输 | 基础 | rsync -az /data/ /backup/ | |
rsync -ah /data/ /backup/人类可读的数值显示 | 基础 | rsync -ah /data/ /backup/ | |
rsync -avzP /data/ /backup/常用组合:归档+压缩+进度+断点续传 | 基础 | rsync -avzP /data/ /backup/ | |
rsync -av --delete /data/ /backup/删除目标端多余文件(镜像同步) | 中级 | rsync -av --delete /data/ /backup/ | |
rsync -av --dry-run /data/ /backup/模拟运行,不实际传输文件 | 基础 | rsync -av --dry-run /data/ /backup/ | |
rsync -avc /data/ /backup/使用校验和判断文件变化 | 中级 | rsync -avc /data/ /backup/ |
远程同步(6)
| 命令 | 难度 | ||
|---|---|---|---|
rsync -av /local/data/ user@remote:/remote/backup/通过 SSH 推送文件到远程主机 | 基础 | rsync -av /local/data/ user@remote:/remote/backup/ | |
rsync -av user@remote:/remote/backup/ /local/data/从远程主机通过 SSH 拉取文件 | 基础 | rsync -av user@remote:/remote/backup/ /local/data/ | |
rsync -av -e "ssh -p 2222" /local/data/ user@remote:/remote/backup/指定 SSH 端口进行同步 | 中级 | rsync -av -e "ssh -p 2222" /local/data/ user@remote:/remote/backup/ | |
rsync -av -e "ssh -i ~/.ssh/deploy_key" user@remote:/source/ /dest/使用指定 SSH 密钥进行同步 | 中级 | rsync -av -e "ssh -i ~/.ssh/deploy_key" user@remote:/source/ /dest/ | |
rsync -av -e "ssh -o ConnectTimeout=10" /local/ user@remote:/remote/设置 SSH 连接超时 | 中级 | rsync -av -e "ssh -o ConnectTimeout=10" /local/ user@remote:/remote/ | |
rsync -av --bwlimit=1000 /local/data/ user@remote:/remote/backup/限制带宽(KB/s) | 中级 | rsync -av --bwlimit=1000 /local/data/ user@remote:/remote/backup/ |
过滤规则(5)
| 命令 | 难度 | ||
|---|---|---|---|
rsync -av --exclude='*.log' /data/ /backup/排除匹配模式的文件 | 基础 | rsync -av --exclude='*.log' /data/ /backup/ | |
rsync -av --exclude='*.log' --exclude='node_modules/' /project/ /backup/排除多个模式 | 基础 | rsync -av --exclude='*.log' --exclude='node_modules/' /project/ /backup/ | |
rsync -av --include='*/' --include='*.py' --exclude='*' /project/ /backup/白名单模式:只包含 .py 文件 | 高级 | rsync -av --include='*/' --include='*.py' --exclude='*' /project/ /backup/ | |
rsync -av --exclude-from=exclude.txt /data/ /backup/从文件读取排除规则 | 中级 | rsync -av --exclude-from=exclude.txt /data/ /backup/ | |
rsync -av --files-from=filelist.txt /data/ /backup/从文件读取需要同步的文件列表 | 中级 | rsync -av --files-from=filelist.txt /data/ /backup/ |
高级选项(11)
| 命令 | 难度 | ||
|---|---|---|---|
rsync -av --link-dest=/backup/prev-backup /data/ /backup/curr-backup/硬链接增量备份 | 高级 | rsync -av --link-dest=/backup/prev-backup /data/ /backup/curr-backup/ | |
rsync -av --remove-source-files /data/ /backup/传输后删除源文件(移动) | 中级 | rsync -av --remove-source-files /data/ /backup/ | |
rsync -av --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r /data/ /backup/传输时设置目标文件权限 | 高级 | rsync -av --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r /data/ /backup/ | |
rsync -av --max-size=100M /data/ /backup/限制最大文件大小 | 中级 | rsync -av --max-size=100M /data/ /backup/ | |
rsync -av --min-size=1K /data/ /backup/限制最小文件大小 | 中级 | rsync -av --min-size=1K /data/ /backup/ | |
rsync -av --timeout=30 /data/ /backup/设置 I/O 超时时间 | 中级 | rsync -av --timeout=30 /data/ /backup/ | |
rsync -av --owner --group /data/ /backup/保留文件属主和组 | 中级 | rsync -av --owner --group /data/ /backup/ | |
rsync -av --no-owner /data/ /backup/不保留文件属主 | 中级 | rsync -av --no-owner /data/ /backup/ | |
rsync -av rsync://rsync.example.com/mirror/ /local/mirror/使用 rsync 守护进程协议同步 | 高级 | rsync -av rsync://rsync.example.com/mirror/ /local/mirror/ | |
rsync rsync://rsync.example.com/查看 rsync 守护进程可用模块 | 高级 | rsync rsync://rsync.example.com/ | |
rsync -av --partial /data/ /backup/保留部分传输的文件(断点续传) | 中级 | rsync -av --partial /data/ /backup/ |