rsync 高效的文件同步工具

rsync 高效的文件同步工具
墨颜丶适用场景:数据备份、跨服务器同步、增量传输
简介
rsync
是一个快速、多功能的文件传输工具,支持增量传输、压缩等功能。它可以通过 SSH 或者通过 xinetd 启动的服务模式来同步文件。
核心优势:
- 增量传输:仅传输文件变化部分,减少带宽消耗。
- 压缩数据:传输过程中自动压缩,节省网络流量。
- 多平台支持:Linux、Windows、macOS 均可使用。
- 安全性:通过 SSH 加密 或 独立服务模式 确保数据安全。
安装rsync
1 | # 检查是否已安装 |
服务端配置
方法一:xinetd 启动模式(低负载场景)
步骤:
- 安装 xinetd:
xinetd
是一个超级服务器,可以用来启动 rsync
服务。
1 | yum -y install xinetd |
- 编辑 xinetd 配置文件
/etc/xinetd.d/rsync
:
确保包含以下内容:
1 | service rsync |
- 配置 rsync 服务
/etc/rsyncd.conf
:
这是一个示例配置文件:
1 | #虚拟用户 |
1 | touch /etc/rsyncd/rsyncd.motd #非必须,连接上rsyncd显示的欢迎信息,此文件可不创建 |
- 设置密码文件
创建并编辑密码文件 /etc/rsync.password
:
1 | # 格式--->用户名:口令,该用户不要求是系统用户 |
- 启动rsync服务
xinetd 启动模式:适合低负载情况
1 | # xinetd的rsync配置文件是/etc/xinetd.d/rsync,需要编辑此文件修改一个参数,显式的指定rsyncd服务的配置文件 |
查看rsync服务是否启动
1 | netstat -an | grep 873 |
方法二:独立模式(高负载场景)
独立启动模式:适合高负载情况
1 | # 启动 |
防火墙配置
确保防火墙允许 rsync
的默认端口 873
:
1 | iptables -A INPUT -p tcp --dport 873 -j ACCEPT |
关闭 SELinux
编辑 /etc/selinux/config
文件,禁用 SELinux:
1 | setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config |
rsync 的基本用法
命令格式
1 | rsync [选项] 源路径 目标路径 |
- 源路径:要同步的文件或目录。
- 目标路径:同步的目标位置,可以是本地路径或远程路径。
常用选项
选项 | 说明 |
---|---|
-a | 归档模式,保留文件属性(权限、时间戳等)并递归同步目录,相当于-rlptgoD 。 |
-v | 显示详细输出。 |
-z | 压缩传输的数据,节省带宽。 |
-r | 递归同步目录。 |
-P | 显示传输进度,并支持断点续传。 |
-e | 指定远程 Shell(如 ssh )。 |
--delete | 删除目标中源不存在的文件(保持完全同步)。 |
--exclude | 排除指定的文件或目录。 |
--include | 包含指定的文件或目录。 |
-n 或 --dry-run | 模拟运行,不实际执行同步。 |
rsync 的常见用法
本地文件同步
将本地目录同步到另一个目录:
1 | 同步目录内容(保留目录结构) |
- 注意:源路径末尾的
/
表示同步目录内容,而不是目录本身。
远程同步 SSH 方式
1 | 将本地文件同步到远程服务器: |
-e ssh
:使用 SSH 协议传输。
删除目标中多余的文件
1 | 保持目标与源完全一致,删除目标中源不存在的文件: |
排除特定文件或目录
1 | 排除 .log 文件和 dir2 目录 |
增量备份
1 | 将文件同步到备份目录,并保留每次备份的版本: |
模拟运行
1 | 测试同步操作,不实际执行: |
通过模组进行传输
1 | export RSYNC_PASSWORD="密码";rsync -av --exclude='*.log' 文件 用户名@IP::模块/ |
通过 SSH 进行传输
使用 -e
参数指定 SSH 作为远程 shell,并提供必要的 SSH 选项(如密钥路径、端口号等)
1 | rsync -av -e --exclude='*.log' "ssh -i 密钥 -p 端口" 文件地址 用户名@IP:远程路径/ |
- 不需要在远程服务器上配置
rsync
服务端。 - 利用了 SSH 的安全特性,确保数据传输的安全性。
- 支持增量传输,只传输变化的部分,提高效率。
- 确保 SSH 访问权限正确配置,特别是使用非默认端口或私钥认证时。
- 如果文件量较大或者网络不稳定,考虑增加
--partial
选项以支持断点续传。
rsync 的高级用法
限速传输
限制传输带宽(单位为 KB/s):
1 | rsync -av --bwlimit=1000 /path/to/source/ /path/to/destination/ |
部分传输
仅传输文件的一部分(适用于大文件):
1 | rsync -av --partial /path/to/source/ /path/to/destination/ |
同步权限
同步文件权限和所有者信息:
1 | rsync -av --chmod=ugo=rwX /path/to/source/ /path/to/destination/ |
同步符号链接
保留符号链接:
1 | rsync -av -L /path/to/source/ /path/to/destination/ |
断点续传
支持断点续传:
1 | rsync -avP /path/to/source/ /path/to/destination/ |
常见问题及解决方案
问题:防火墙阻止连接
确保防火墙规则正确配置,允许 rsync
默认端口 873
通过。
1 | iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT |
问题:SELinux 影响同步
确认 SELinux 已被关闭或设置为宽松模式。
1 | setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config |
问题:部分文件同步失败
工作中遇到一部分rsync成功了,一部分超时了
检查 /etc/rsyncd.conf
中的最大连接数设置:
1 | # /etc/rsyncd.conf 检查 /etc/rsyncd.conf 中的最大连接数设置: |
问题:SSH 连接问题
如果使用 SSH 连接远程服务器,确保 SSH 密钥配置正确,或者使用密码登录。
优先使用 -e ssh
方式,避免明文传输。
问题:路径问题
注意源路径末尾的 /
,它会影响同步行为:
- 有
/
:同步目录内容。 - 无
/
:同步目录本身。
问题:断点续传
使用 -P
选项支持断点续传:
1 | rsync -avzP /path/to/source/ user@remote:/path/to/destination/ |
问题:路径与权限
- 路径末尾的
/
:source/
:同步目录内容。source
:同步整个目录(包括目录本身)。
- 权限问题:
- 确保目标路径有写入权限。
- 使用
--chmod
显式设置权限:
1 | rsync -av --chmod=ugo=rwX /source/ /destination/ |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果