环境准备
服务器
- IP地址: 11.0.1.192
- 主机名: backup
客户端
- IP地址: 11.0.1.193
- 主机名: nfs01
- IP地址: 11.0.1.198
- 主机名: web01
rsync守护进程部署方式
rsync守护进程客户端配置
- 下载并安装所需软件
[root@backup ~]#rpm -qa | grep rsync
[root@backup ~]#yum -y install rsync
- 编辑配置文件
[root@backup ~]# man rsync
[root@backup ~]# vim /etc/rsyncd.conf
?
uid = rsync ? ? ? ? ? ? ? #指定管理备份目录的用户 远端命令使用rsync访问共享目录
gid = rsync ? ? ? ? ? ? ? #指定管理备份目录的用户组
use chroot = no ? ? ? ? ? #和安全相关的配置
max connections = 200 ? ? #最大连接数 只能同时有200个客户端连接到备份服务器
timeout = 300 ? ? ? ? ? ? #超时时间(单位秒)(不进行备份多长时间断开)
pid file = /var/run/rsyncd.pid #记录进程号码信息(1.让程序快速停止进程 2.判断一个服务是否正在运行)
lock file = /var/run/rsync.lock ? ? ? ? ? #锁文件
log file = /var/log/rsyncd.log ? ? ? ? ? ? #rsync服务的日志文件,用于排错分析问题,显示出错信息
fake super = yes ? #在新版本中必须加这个
ignore errors ? ? ? ? ? #忽略错误程序
read only = false ? ? ? #是否只读(这里是假,表示能写入)指定备份目录可读可写
list = false ? ? ? ? ? ? #使客户端可以查看服务端的模块信息
hosts allow = 172.16.2.0/24 ? ? ? #准许访问rsync服务器客户范围(白名单)
#hosts deny = 0.0.0.0/32 ? ? ? ? ? #禁止访问rsync服务器客户范围(黑名单)
auth users = rsync_backup ? ? ? ? #不存在的用户,只用于认证(指定认证用户)
#设置进行连接认证的密钥文件:
secrets file = /etc/rsync.password ? #认证时密钥文件(指定认证用户密码文件 用户名称:密码信息)
#模块信息:
[backup]
comment = "backup"
path = /backup/web ? ? ? #模块对应的位置(路径)(模块中配置参数,知道备份目录)
?
?
?
rsync配置文件可直接粘贴至配置文件
uid = rsync
gid = rsync
use chroot = no ? ?
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
fake super = yes
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup"
path = /backup/web
?
?
重启rsync服务
[root@backup ~]# systemctl restart rsyncd
查看rsync状态
[root@backup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
? Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
? Active: active (running) since Thu 2025-11-13 03:21:15 EST; 14s ago
Main PID: 6989 (rsync)
? CGroup: /system.slice/rsyncd.service
? ? ? ? ? └─6989 /usr/bin/rsync --daemon --no-detach
?
Nov 13 03:21:15 backup systemd[1]: Started fast remote file copy program daemon.
查看rsync端口信息(默认873)
[root@backup ~]# netstat -lntup | grep 873
tcp ? ? ? 0 ? ? 0 0.0.0.0:873 ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? 6989/rsync
tcp6 ? ? ? 0 ? ? 0 :::873 ? ? ? ? ? ? ? ? :::* ? ? ? ? ? ? ? ? ? LISTEN ? ? 6989/rsync
[root@backup ~]# ll /var/run/rsyncd.pid
-rw-r--r-- 1 root root 5 Nov 13 03:21 /var/run/rsyncd.pid
[root@backup ~]# cat /var/run/rsyncd.pid
6989
查看rsync的进程号
[root@backup ~]# ps -ef | grep rsync
root ? ? ? 6989 ? ? 1 0 03:21 ? ? ? ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root ? ? ? 7034 ? 6791 0 03:23 pts/0 ? 00:00:00 grep --color=auto rsync
?
- 创建rsync服务的虚拟用户
创建一个rsync的虚拟用户,只被程序使用
[root@backup ~]# useradd rsync -M -s /sbin/nologin
[root@backup ~]# id rsync
uid=1002(rsync) gid=1002(rsync) groups=1002(rsync)
- 生成备份服务认证密码文件
给指定认证用户设置密码
[root@backup ~]# echo "rsync_backup:qianqian123." > /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:qianqian123.
给指定认证用户密码文件设置权限
[root@backup ~]# chmod 600 /etc/rsync.password
- 建立备份目录,并将该目录及其下所有文件的权限更改为rsync
[root@backup ~]# mkdir /backup/web
[root@backup ~]# chown -R rsync.rsync /backup/ ? ? ? #一定要将文件属主和属组改成rsync用户
- 启动rsync守护进程,并验证其是否成功运行
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
[root@backup ~]# systemctl status rsyncd
需掌握rsync守护进程的命名规则
Access via rsync daemon:
客户端做拉的操作:恢复数据
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
? ? rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
客户端做推的操作:备份数据
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
SRC:要推送备份数据信息
[USER@]:指定认证用户信息
HOST:指定远程主机的IP地址或者主机名称
::DEST备份服务器的模块信息
? ? rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync守护进程服务端配置(客户端视角)
- 在客户端创建一个安全文件
[root@nfs01 ~]# echo "qianqian123." > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
- 执行非交互式数据传输测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@11.0.1.192::backup --password-file=/etc/rsync.password
案例: 使用rsync实现无差异同步
#推送方式实现无差异,以客户端为准,客户端有什么服务端就有什么?
[root@nfs01 ~]# rsync -avz --delete /lqq rsync_backup@11.0.1.192::backup --password-file=/etc/rsync.password
#客户端
[root@nfs01 lqq]# tree /lqq/
/lqq/
├── a
│?? ├── 1.txt
│?? ├── 2.txt
│?? └── 3.txt
├── b
│?? ├── 1.txt
│?? ├── 2.txt
│?? └── 3.txt
├── c
│?? ├── 1.txt
│?? ├── 2.txt
│?? └── 3.txt
└── exclude.txt
?
3 directories, 10 files
#服务端
[root@backup backup]# tree lqq/
lqq/
├── a
│?? ├── 1.txt
│?? ├── 2.txt
│?? └── 3.txt
├── b
│?? ├── 1.txt
│?? ├── 2.txt
│?? └── 3.txt
├── c
│?? ├── 1.txt
│?? ├── 2.txt
│?? └── 3.txt
└── exclude.txt
?
3 directories, 10 files
?
#拉取方式实现无差异,以服务端为准,服务端有什么客户端端就有什么?
[root@nfs01 ~]# rsync -avz --delete ? rsync_backup@11.0.1.192::backup /lqq/ --password-file=/etc/rsync.password
receiving incremental file list
deleting c/3.txt
deleting c/2.txt
deleting c/1.txt
deleting c/
deleting b/3.txt
deleting b/2.txt
deleting b/1.txt
deleting b/
deleting a/3.txt
deleting a/2.txt
deleting a/1.txt
deleting a/
deleting exclude.txt
./
hosts
11.0.1.193/
11.0.1.193/hosts
11.0.1.198/
11.0.1.198/hosts
?
sent 100 bytes received 709 bytes 539.33 bytes/sec
total size is 963 speedup is 1.19
?
#客户端
[root@nfs01 lqq]# ll
total 4
drwxr-xr-x 2 1000 1000 19 Nov 17 07:54 11.0.1.193
drwxr-xr-x 2 1000 1000 19 Nov 17 07:54 11.0.1.198
-rw-r--r-- 1 root root 321 Nov 11 23:04 hosts
#服务端
[root@backup backup]# ll
total 4
drwxr-xr-x 2 rsync rsync 19 Nov 17 07:54 11.0.1.193
drwxr-xr-x 2 rsync rsync 19 Nov 17 07:54 11.0.1.198
-rw-r--r-- 1 rsync rsync 321 Nov 11 23:04 hosts
案例:rsync 的Limit限速
企业案例
某数据库管理员在使用rsync从远程服务器拉取大量数据备份时,因为文件体积庞大,导致内部交换机的带宽被占用,影响了其他用户的正常访问。
#客户端先生成一个500M大小的文件环境准备
[root@nfs01 ~]# dd if=/dev/zero of=./size.disk bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 6.31678 s, 83.0 MB/s
?
[root@nfs01 ~]# rsync -avzP? ./size.disk rsync_backup@11.0.1.192::backup --password-file=/etc/rsync.password
sending incremental file list
size.disk
?? 524,288,000 100%? 109.67MB/s ?? 0:00:04 (xfr#1, to-chk=0/1)
?
sent 509,973 bytes? received 43 bytes? 92,730.18 bytes/sec
total size is 524,288,000? speedup is 1,027.98
?
#服务端接收文件
[root@backup backup]# ll
total 512004
drwxr-xr-x 2 rsync rsync ? ? ?? 19 Nov 17 07:54 11.0.1.193
drwxr-xr-x 2 rsync rsync ? ? ?? 19 Nov 17 07:54 11.0.1.198
-rw-r--r-- 1 rsync rsync ? ? ? 321 Nov 11 23:04 hosts
-rw-r--r-- 1 rsync rsync 524288000 Nov 17 10:53 size.disk