Ubuntu22.04 配置Rsync服务并实现增量同步
Ubuntu22.04 配置Rsync服务并实现增量同步
rsync是一个开源的快速备份工具,可以镜像保存整个目录树和文件系统。
rsync使用所谓的“rsync算法”来使本地和远程的文件保持同步。这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
rsync可以工作在unix/linux,windows,mac等等。
rsync可以实现增量备份,即上传文件时,先与本地文件进行比较,只上传本地文件有变化的部分,这样就避免了上传整个文件。
如果rsync命令无效请执行
sudo apt-get install rsync
一、服务端配置
1. 编辑/etc/default/rsync
# 打开rsync
sudo vim /etc/default/rsync
# 编辑rsync
RSYNC_ENABLE=true
2. 创建/etc/rsyncd.conf,并填写配置信息
sudo vim /etc/rsyncd.conf
max connections = 2
log file = /var/log/rsync.log
timeout = 300
Charset = UTF-8
[share] # 模块名
comment = Public Share
# path为需要同步的文件夹路径
path = /home/share
read only = no
list = yes
uid = root
gid = root
# 必须和 rsyncd.secrets中的用户名对应
auth users = user
secrets file = /etc/rsyncd.secrets
3. 创建/etc/rsyncd.secrets,配置用户名和密码.
sudo vim /etc/rsyncd.secrets
4. 配置用户名和密码,密码可以任意设置
user:password
5. 修改rsyncd.secrets文件的权限
sudo chmod 600 /etc/rsyncd.secrets
6. 重启rsync服务
sudo /etc/init.d/rsync restart
二、客户端使用,并缺省密码
方法 1:使用 RSYNC_PASSWORD
环境变量(密码明文在命令中)
RSYNC_PASSWORD="your_password" rsync -cvazu --progress user@10.155.0.5::halo ./
- 优点:简单直接,适合临时使用。
- 缺点:密码会出现在命令行历史记录中(不安全)。
方法 2:使用 --password-file
(推荐,更安全)
步骤 1:创建密码文件
echo "your_password" > /tmp/rsync_passwd
chmod 600 /tmp/rsync_passwd # 限制权限,避免泄露
步骤 2:运行 rsync
rsync -cvazu --progress --password-file=/tmp/rsync_passwd user@10.155.0.5::halo ./
- 优点:密码不会出现在命令行历史记录,更安全。
- 缺点:需要额外管理密码文件。
方法 3:使用 SSH 认证(免密登录,最安全)
如果目标服务器支持 SSH(而不是 rsync daemon 模式),可以使用 SSH 密钥认证:
rsync -cvazu -e "ssh -i /path/to/your/private_key" --progress user@10.155.0.5:/remote/path/halo ./
- 优点:无需密码,安全性最高。
- 缺点:需要提前配置 SSH 密钥。
命令参数说明
-
-c
:基于校验和(而非时间戳)判断文件变化(可选) -
-v
:显示详细输出 -
-a
:归档模式(保持权限、时间戳等) -
-z
:压缩传输 -
-u
:增量同步(跳过目标端已更新的文件) -
--progress
:显示传输进度
注意事项
-
安全性:方法 1 会暴露密码,建议仅在测试环境使用。
-
清理密码文件:使用方法 2 后,记得删除临时密码文件:
rm -f /tmp/rsync_passwd
-
如果连接的是 rsync daemon(使用
::
语法),确保服务端已正确配置模块(如[halo]
)。
如果需要进一步优化(如排除某些文件、限速等),可以追加 --exclude
或 --bwlimit
参数。
评论
其他文章