Loading... # Ubuntu22.04 配置Rsync服务并实现增量同步 rsync是一个开源的快速备份工具,可以镜像保存整个目录树和文件系统。 rsync使用所谓的“rsync算法”来使本地和远程的文件保持同步。这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync可以工作在unix/linux,windows,mac等等。 rsync可以实现增量备份,即上传文件时,先与本地文件进行比较,只上传本地文件有变化的部分,这样就避免了上传整个文件。 **如果rsync命令无效请执行** ```bash sudo apt-get install rsync ``` ## 一、服务端配置 ### 1. 编辑/etc/default/rsync ```bash # 打开rsync sudo vim /etc/default/rsync # 编辑rsync RSYNC_ENABLE=true ``` ### 2. 创建/etc/rsyncd.conf,并填写配置信息 ```bash sudo vim /etc/rsyncd.conf ``` ```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,配置用户名和密码. ```bash sudo vim /etc/rsyncd.secrets ``` ### 4. 配置用户名和密码,密码可以任意设置 ```bash user:password ``` ### 5. 修改rsyncd.secrets文件的权限 ```bash sudo chmod 600 /etc/rsyncd.secrets ``` ### 6. 重启rsync服务 ```bash sudo /etc/init.d/rsync restart ``` ## 二、客户端使用,并缺省密码 ### **方法 1:使用** **`RSYNC_PASSWORD`** **环境变量(密码明文在命令中)** ```bash RSYNC_PASSWORD="your_password" rsync -cvazu --progress user@10.155.0.5::halo ./ ``` * **优点**:简单直接,适合临时使用。 * **缺点**:密码会出现在命令行历史记录中(不安全)。 --- ### **方法 2:使用** **`--password-file`** **(推荐,更安全)** #### **步骤 1:创建密码文件** ```bash echo "your_password" > /tmp/rsync_passwd chmod 600 /tmp/rsync_passwd # 限制权限,避免泄露 ``` #### **步骤 2:运行 rsync** ```bash rsync -cvazu --progress --password-file=/tmp/rsync_passwd user@10.155.0.5::halo ./ ``` * **优点**:密码不会出现在命令行历史记录,更安全。 * **缺点**:需要额外管理密码文件。 --- ### **方法 3:使用 SSH 认证(免密登录,最安全)** 如果目标服务器支持 SSH(而不是 rsync daemon 模式),可以使用 SSH 密钥认证: ```bash 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. **安全性**:方法 1 会暴露密码,建议仅在测试环境使用。 2. **清理密码文件**:使用方法 2 后,记得删除临时密码文件: ```bash rm -f /tmp/rsync_passwd ``` 3. **如果连接的是 rsync daemon**(使用 `::` 语法),确保服务端已正确配置模块(如 `[halo]`)。 如果需要进一步优化(如排除某些文件、限速等),可以追加 `--exclude` 或 `--bwlimit` 参数。 最后修改:2025 年 04 月 15 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏