Rsync 远程同步指南

文章目录
Rsync 远程同步指南

  1. Rsync 简介
  2. 同步方式
  3. 常用 Rsync 命令
    基本命令格式
    常用选项:
  4. Rsync 源配置格式
    格式一:
    格式二:
  5. Rsync 服务端与客户端实验
    前提:
    实验环境:
    ① 配置 Rsync 源服务器(192.168.10.18)
    ② 客户端配置(192.168.10.20)
  6. Rsync + Inotify 实现触发式同步
  7. 修改 Rsync 源服务器配置:
  8. 调整 inotify 内核参数:
  9. 安装 inotify-tools:
  10. 编写触发式同步脚本:
    Rsync 实现快速删除大量文件
    选项说明:
    Rsync 远程同步指南
  11. Rsync 简介
    Rsync(Remote Sync,远程同步)是一个开源的快速备份工具,常用于在不同主机之间进行目录树的镜像同步。它支持增量备份,能够保留文件的链接和权限,且使用了优化的同步算法,使得它在进行数据传输时非常高效。在传输文件前,Rsync 会对文件进行压缩,因此非常适合用于异地备份、镜像服务器等场景。

在 Rsync 远程同步任务中:

发起端:负责发起 Rsync 同步操作的客户机。
同步源:负责响应来自发起端 Rsync 操作的服务器,提供要同步的文件。发起端需要对同步源位置具有读取权限。
Rsync 通常用于 Linux 系统的数据镜像备份,支持远程同步和本地复制。它可以实现全量备份和增量备份,保持文件链接、权限、属性,并通过压缩提高传输效率。适用于架构集中式备份或异地备份等应用场景。

官方网站:https://rsync.samba.org

  1. 同步方式
    Rsync 提供以下三种主要备份方式:

完整备份:每次备份时,将所有文件或目录从备份源完整备份到目的地。
差量备份:备份自上次完整备份后发生变化的数据,不会清除存档属性。
增量备份:备份自上次备份(无论是增量备份还是完整备份)后发生变化的数据,会清除存档属性。
在 Rsync 同步过程中:

发起端:发起同步操作的客户机。
备份源:响应客户机同步请求的服务器,即需要备份的服务器。
服务端:运行 Rsync 服务的服务器,通常也是备份源。
客户端:存放备份数据的设备。
3. 常用 Rsync 命令
基本命令格式
rsync [选项] 原始位置 目标位置
1
常用选项:
-r:递归模式,包含目录及其子目录中的所有文件。
-l:对于符号链接文件,保留为符号链接文件。
-v:显示同步过程的详细信息。
-z:在传输文件时进行压缩。
-a:归档模式,保留文件权限、属性等信息,等同于组合选项 -rlptgoD。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件。
--checksum:根据校验和决定是否跳过文件,而非文件大小或修改时间。
4. Rsync 源配置格式
Rsync 源有两种配置表达方式:

格式一:
用户名@主机地址::共享模块名
1
示例:

rsync -avz backuper@192.168.10.22::wwwroot /opt/
1
格式二:
rsync://用户名@主机地址/共享模块名
1
示例:

rsync -avz rsync://backuper@192.168.10.22/wwwroot /opt/
1
5. Rsync 服务端与客户端实验
前提:
关闭防火墙和增强功能:
systemctl stop firewalld
setenforce 0
1
2
实验环境:
服务端:192.168.10.18
客户端:192.168.10.20
① 配置 Rsync 源服务器(192.168.10.18)
检查 Rsync 是否已安装:

rpm -q rsync
1
建立配置文件 /etc/rsyncd.conf,并添加以下配置:

uid = root
gid = root
use chroot = yes
address = 192.168.10.18
port = 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.10.0/24
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z

[wwwroot]
path = /var/www/html
comment = Document Root of www.kgc.com
read only = yes
auth users = backuper
secrets file = /etc/rsyncd_users.db

创建用户文件 /etc/rsyncd_users.db:

vim /etc/rsyncd_users.db
内容:

backuper:123456
设置权限:

chmod 600 /etc/rsyncd_users.db
chmod +r /var/www/html/
启动 Rsync 服务:

rsync --daemon
netstat -anpt | grep rsync
停止 Rsync 服务:

kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
② 客户端配置(192.168.10.20)
下载资源并备份到本地:

rsync -avz backuper@192.168.10.18::wwwroot /opt/
配置免交互备份:

echo "123456" > /etc/server.pass
chmod 600 /etc/server.pass

crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.10.18::wwwroot /opt/
启计划任务:

systemctl restart crond
systemctl enable crond
6. Rsync + Inotify 实现触发式同步
Rsync 与 inotify 联合使用,可以实现文件实时监控和触发式备份。只要目录下的文件发生变化,便会立即启动 Rsync 增量备份。

  1. 修改 Rsync 源服务器配置:
    vim /etc/rsyncd.conf
    read only = no
  2. 调整 inotify 内核参数:
    vim /etc/sysctl.conf
    fs.inotify.max_queued_events = 16384
    fs.inotify.max_user_instances = 1024
    fs.inotify.max_user_watches = 1048576
    sysctl -p
  3. 安装 inotify-tools:
    tar zxvf inotify-tools-3.14.tar.gz -C /opt/
    cd /opt/inotify-tools-3.14
    ./configure
    make && make install
    监控目录变化:

inotifywait -mrq -e modify,create,move,delete /var/www/html
14. 编写触发式同步脚本:
创建脚本 /opt/inotify.sh:

!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.10.18::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
赋予脚本执行权限:

chmod +x /opt/inotify.sh
chmod 777 /var/www/html/
Rsync 实现快速删除大量文件
使用 Rsync 的替换原理,可以快速删除大量文件。假设需要删除 /usr/local/nginx/proxy_temp 下的缓存文件,可以按如下步骤操作:

创建一个空文件夹:
mkdir /home/blank
使用 Rsync 清空目标目录:
rsync --delete-before -a -H -v --progress --stats /home/blank /usr/local/nginx/proxy_temp
选项说明:
--delete-before:在传输前进行删除操作。
-a:归档模式,递归传输并保留所有文件属性。
-H:保留硬连接。
-v:显示详细输出。
--progress:显示传输进度。
--stats:显示文件传输的统计信息。
通过这篇

before -a -H -v --progress --stats /home/blank /usr/local/nginx/proxy_temp

选项说明:

  • --delete-before:在传输前进行删除操作。
  • -a:归档模式,递归传输并保留所有文件属性。
  • -H:保留硬连接。
  • -v:显示详细输出。
  • --progress:显示传输进度。
  • --stats:显示文件传输的统计信息。
    ————————————————

原文链接:https://blog.csdn.net/xw2441176267/article/details/142970214

posted @ 2025-05-23 15:16  dreamcloud  阅读(358)  评论(0)    收藏  举报