企业中Linux系统如何通过rsync服务做数据同步

1. rsync服务介绍

  rsync是一个远程数据同步工具,可通过网络快速同步多台主机间的文件,也可以使用 rsync 同步本地硬盘中的不同目录。rsync 在同步文件时会检查文件之间是否有差异,它只同步存在差异或者不存在的文件,即增量备份。

2. 环境介绍

  此博文利用两台 Linux(centos) 主机,一台作为客户端,即应用类型服务器,一台作为服务端,即备份服务器,使用rsync服务将客户端的重要数据定时同步至备份服务器,模拟企业生产环境进行介绍。

3. 部署安装

  服务端部署(备份服务器)

    步骤一:检查是否安装   

[root@backup ~]# rpm -qa | grep rsync  #<==== 检查确认已经安装,若未安装利用 yum install rsync -y 命令进行安装
rsync-3.1.2-6.el7_6.1.x86_64

    步骤二:编写配置文件

cp  /etc/rsyncd.conf{,.bak}  #<==== 备份原始配置文件
echo ''> /etc/rsyncd.conf  #<==== 清空文件内容
vim /etc/rsyncd.conf
uid = rsync		#----指定管理备份目录的用户
gid = rsync		#----指定管理备份目录的用户组
port = 873		#----定义rsync备份服务的网络端口号
fake super = yes	#---- 将rsync虚拟用户伪装成为一个超级管理员用户
use chroot = no	        #----和安全相关的配置
max connections = 200	#----最大连接数
timeout = 300		#----超时时间(单位秒)
pid file = /var/run/rsyncd.pid	#----记录进程号信息 1、让程序快速结束进程 2、判断一个服务是否在运行
lock file = /var/run/rsync.lock	#----锁文件
log file = /var/log/rsyncd.log	#----记录rsync服务的日志文件,用于排错分析问题
ignore errors		#----忽略传输中的简单错误
read only = false	#----指定备份目录可读可写
list = false		#----使客户端可以查看服务端的模块信息
hosts allow = 172.16.1.0/24	#----允许传输备份数据的主机(白名单)
hosts deny = 0.0.0.0/32		#----禁止传输数据备份的主机(黑名单)
auth users = rsync	#----指定认证用户
secrets file = /etc/rsync.password	#----指定认证用户密码文件 用户名称:密码信息
[backup]		#----模块信息
comment = "backup dir by yunxuan"
path = /backup		#----模块中的配置参数  指定备份目录

    步骤三:搭建服务环境

    创建rsync虚拟用户、创建备份服务认证密码文件、创建备份目录 

[root@backup ~]# useradd -M -s /sbin/nologin rsync  #<==== 创建虚拟用户rsync
[root@backup ~]# mkdir /backup  #<==== 创建备份目录
[root@backup ~]# chown -R rsync.rsync /backup/  #<==== 修改备份目录访问权限
[root@backup ~]# ll -d /backup/  #<==== 查看备份目录属性信息
drwxr-xr-x. 2 rsync rsync 6 Nov  3 17:23 /backup/
[root@backup ~]# echo "rsync:123456" > /etc/rsync.password  #<==== 创建备份服务认证密码文件 [root@backup ~]# chmod 600 /etc/rsync.password   #<==== 修改备份服务认证密码文件权限
[root@backup ~]# ll /etc/rsync.password  #<==== 查看备份服务认证密码文件属性信息
-rw-------. 1 root root 13 Nov 3 17:24 /etc/rsync.password

    步骤四:启动rsync应用

[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@backup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-11-03 17:36:40 CST; 18s ago
 Main PID: 3651 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─3651 /usr/bin/rsync --daemon --no-detach

Nov 03 17:36:40 backup systemd[1]: Started fast remote file copy program daemon.

    步骤五:待客户端配置完成,进行测试数据同步功能

[root@backup ~]# ll /backup/  #<==== 检查客户端是否将hosts文件备份至服务端/backup目录
total 4
-rw-r--r--. 1 rsync rsync 158 Jun  7  2013 hosts
[root@backup ~]# 

  

  客户端部署(应用服务器)

    步骤一:检查rsync软件是否安装  

[root@backup ~]# rpm -qa | grep rsync  #<==== 检查确认已经安装,若未安装利用 yum install rsync -y 命令进行安装
rsync-3.1.2-6.el7_6.1.x86_64

    步骤二:客户端创建密码文件(用于免交互同步数据)

[root@nfs01 ~]# echo "123456">/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ll /etc/rsync.password
-rw-------. 1 root root 7 Nov  3 17:41 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
123456

    步骤三:测试数据同步功能

[root@nfs01 ~]# rsync -avz /etc/hosts rsync@172.16.1.211::backup --password-file=/etc/rsync.password  #<==== 将客户端hosts文件备份至服务端
sending incremental file list
hosts

sent 140 bytes  received 43 bytes  366.00 bytes/sec
total size is 158  speedup is 0.86

 

4. rsync 同步命令语法和常用参数介绍

   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 rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

  常用参数:

-v  显示详细的传输信息
-a  命令的归档参数,相当于(rtopgDl)
 -r  递归参数
 -t  保持稳健属性信息中时间信息(mtime)不变,修改时间
 -o  保持文件的属主信息不变
 -g  保持文件的属组信息不变
 -p  保持文件的权限信息不变
 -D  保持设备文件信息不变
 -l  保持链接文件属性不变
 -L  保持链接文件数据信息不变
-P 显示数据传输的进度信息
--exclude=PATTERN 排除指定数据不被传输
--exclude-from=file 排除指定数据不被传输(批量排除)
--bwlimit=RATE 显示传输的速率
--delete 无差异同步数据

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 5. rsync守护进程在企业中的应用

  无差异化同步数据

  将客户端/data目录下的所有数据无差异的同步至服务端/backup目录下

  --delete    此参数在企业中慎用

# 当前客户端数据
[root@nfs01 ~]# ll /data
total 0
-rw-r--r--. 1 root root 0 Nov  3 18:52 01.txt
-rw-r--r--. 1 root root 0 Nov  3 18:52 02.txt
-rw-r--r--. 1 root root 0 Nov  3 18:52 03.txt
-rw-r--r--. 1 root root 0 Nov  3 18:52 a.jpg
-rw-r--r--. 1 root root 0 Nov  3 18:52 b.jpg
drwxr-xr-x. 2 root root 6 Nov  3 18:52 test
# 当前服务端数据
[root@backup ~]# ll /backup/
total 4
-rw-r--r--. 1 rsync rsync 158 Jun  7  2013 hosts

# 客户端执行同步命令
[root@nfs01 ~]# rsync -avz --delete /data/ rsync@172.16.1.211::backup --password-file=/etc/rsync.password
sending incremental file list
deleting hosts
./
01.txt
02.txt
03.txt
a.jpg
b.jpg
test/

sent 372 bytes  received 139 bytes  1,022.00 bytes/sec
total size is 0  speedup is 0.00
# 查看服务端同步情况
[root@backup ~]# ll /backup/
total 0
-rw-r--r--. 1 rsync rsync 0 Nov  3 18:52 01.txt
-rw-r--r--. 1 rsync rsync 0 Nov  3 18:52 02.txt
-rw-r--r--. 1 rsync rsync 0 Nov  3 18:52 03.txt
-rw-r--r--. 1 rsync rsync 0 Nov  3 18:52 a.jpg
-rw-r--r--. 1 rsync rsync 0 Nov  3 18:52 b.jpg
drwxr-xr-x. 2 rsync rsync 6 Nov  3 18:52 test

  备份链接文件,要使链接文件数据信息不失效,加 -L 参数生效

[root@nfs01 data]# ll
total 4
lrwxrwxrwx. 1 root root 7 Nov  3 18:59 001_link.txt -> 001.txt
-rw-r--r--. 1 root root 7 Nov  3 18:59 001.txt
[root@nfs01 data]# rsync -avz -L  /data/001_link.txt rsync@172.16.1.211::backup --password-file=/etc/rsync.password
sending incremental file list
001_link.txt

sent 105 bytes  received 43 bytes  296.00 bytes/sec
total size is 7  speedup is 0.05


[root@backup backup]# ll 001_link.txt 
-rw-r--r--. 1 rsync rsync 7 Nov  3 18:59 001_link.txt
[root@backup backup]# cat 001_link.txt 
123456

   守护进程多模块功能配置  

vim  /etc/rsyncd.conf  #<==== 编辑rsync配置文件,加入以下内容,需要继续添加其他模块可自定义添加,保存退出后重启服务,创建备份目录,修改备份目录属主和属组信息

[backup]
comment="backup dir by yunxuan"
path=/backup
[dba]
comment="backup dir by yunxuan"
path=/dba

[root@backup backup]# ll -d /data
drwxr-xr-x. 2 rsync rsync 6 Nov  3 19:40 /data
[root@backup backup]# ll -d /backup/
drwxr-xr-x. 3 rsync rsync 106 Nov  3 19:04 /backup/

 

   

# 客户端只需选择不同的模块即可
[root@nfs01 data]# rsync -avz  /data/001_link.txt rsync@172.16.1.211::backup --password-file=/etc/rsync.password
[root@nfs01 data]# rsync -avz  /data/001_link.txt rsync@172.16.1.211::dba --password-file=/etc/rsync.password

 

  守护进程排除功能

    单个文件形式排除

[root@nfs01 data]# tree    #<==== 客户端/data目录下数据,计划过滤掉部分文件,其余的文件同步至服务端/backup目录
. ├── 001_link.txt
-> 001.txt ├── 001.txt ├── a │   ├── 1.txt │   ├── 2.txt │   └── 3.txt ├── b │   ├── 1.txt │   ├── 2.txt │   └── 3.txt └── c ├── 1.txt ├── 2.txt └── 3.txt 3 directories, 11 files
#==== 过滤掉/data/b/1.txt文件和/data/c目录,其余全部同步 [root@nfs01 data]# rsync
-avz /data --exclude=/data/b/1.txt --exclude=/data/c rsync@172.16.1.211::backup --password-file=/etc/rsync.password sending incremental file list data/ data/001.txt data/001_link.txt -> 001.txt data/a/ data/a/1.txt data/a/2.txt data/a/3.txt data/b/ data/b/2.txt data/b/3.txt sent 503 bytes received 161 bytes 1,328.00 bytes/sec total size is 14 speedup is 0.02

 

  

#==== 服务端结果
[root@backup backup]# tree . └── data ├── 001_link.txt ├──
001.txt ├── a │   ├── 1.txt │   ├── 2.txt │   └── 3.txt └── b ├── 2.txt └── 3.txt

 

    以上方式以单个文件形式排除,若有许多文件,如何实现批量排除。那就是将这些文件名称写入某一个文件,然后实现,案例如下:

[root@nfs01 data]# vim exclude.txt  #<==== 在客户端编辑过滤文件

/data/a/1.txt
/data/b/2.txt
/data/c/3.txt
/data/exclude.txt

#==== 客户端同步数据 [root@nfs01 data]# rsync
-avz /data --exclude-from=/data/exclude.txt rsync@172.16.1.211::backup --password-file=/etc/rsync.password sending incremental file list data/ data/001.txt data/001_link.txt -> 001.txt data/a/ data/a/2.txt data/a/3.txt data/b/ data/b/1.txt data/b/3.txt data/c/ data/c/1.txt data/c/2.txt sent 578 bytes received 184 bytes 1,524.00 bytes/sec total size is 14 speedup is 0.02

 

  

#==== 服务端查看同步情况
[root@backup backup]# tree . └── data ├── 001_link.txt ├──
001.txt ├── a │   ├── 2.txt │   └── 3.txt ├── b │   ├── 1.txt │   └── 3.txt └── c ├── 1.txt └── 2.txt 4 directories, 8 files

 

  守护进程访问控制功能(黑白名单在rsync配置文件中可设置)

hosts allow=172.16.1.0/24  #<==== 白名单
hosts deny=0.0.0.0/32  #<==== 黑名单

 

    只有白名单:白名单允许,其余全部阻止

    只有黑名单:黑名单阻止,其余全部允许

    既有白名单又有黑名单:白名单的允许,黑名单阻止,其余的全允许

    白名单与黑名单网段一致:白名单优先于黑名单

  守护进程列表功能配置

    配置文件 rsyncd.conf 中,list = false改为list = true即可,为了安全起见,将该功能关闭,list = false 

[root@nfs01 data]# rsync -avz rsync@172.16.1.211::  #<==== 列表功能打开时,在客户端能够看到服务端的模块信息,不安全,建议关闭该功能
backup             "backup dir by yunxuan"
dba                "backup dir by yunxuan"

 

 

  

    

posted @ 2020-11-03 20:19  小屁孩云轩  阅读(163)  评论(0编辑  收藏  举报