当前位置: 首页 > 工具软件 > rsync > 使用案例 >

Rsync

艾璞瑜
2023-12-01

一、什么是rsync以及它的作用

定义:是开源,高速的,数据复制(拷贝)工具
作用:工作中需要定时/实时数据备份。本地服务器目录,不同机器,不同机房之间的数据备份,都可以用rsync完成。

二、rsync的三种模式

(1)本地模式

rsync就是一个命令
命令操作如下3条:

a:把数据从一个地方复制到另一个地方(仅在一台机器增量),相当于cp;

[root@localhost ~]# rsync /etc/hosts /opt
[root@localhost ~]# ls /opt
hosts

b:通过加参数实现删除的功能,相当于rm;
删除文件内容

root@localhost ~]# touch /null.txt   #创建一个空文件
[root@localhost ~]# ls /opt
hosts
[root@localhost ~]# cat /opt/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost ~]# rsync -r --delete /null.txt /opt/hosts  #让前面的null.txt和后面的hosts一样,都是空内容
[root@localhost ~]# cat /opt/hosts
[root@localhost ~]#

删除所有文件

[root@localhost ~]# mkdir /null   #创建一个空目录
[root@localhost ~]# rsync -r --delete /null/ /opt/  #让前面的null目录和后面的opt目录保持一致,都是空目录
[root@localhost ~]# ls /opt
[root@localhost ~]#

c:查看属性信息,相当于ls (不重要)

[root@localhost ~]# rsync /etc/hosts
-rw-r--r--       158 2013/06/07 22:31:32 hosts

(2)远程shell模式

借助类似ssh隧道传输数据,适合不同机器之间的复制。类似于scp,scp是远程全量拷贝,rsync是远程增量拷贝。
拉:从远端拉取到本地:
rsync 参数 认证用户@主机地址:源路径 本地路径
推:从本地推到远端:
rsync 参数 本地路径 认证用户@主机地址:目标路径

推的实例:把自己/opt下的东西取到另一台主机的/opt目录下

[root@bogon ~]# rsync -avz /etc/hosts root@192.168.119.129:/opt/
[root@localhost ~]# cd /opt  #在另一台主机上查看已经接受到了
[root@localhost opt]# ls
hosts

拉的实例:把另一台/opt下的东西取到自己的/opt目录下

[root@bogon ~]# cd /opt
[root@bogon opt]# ls
[root@bogon opt]# pwd
/opt
[root@bogon opt]# rsync -avz root@192.168.119.129:/opt/* ./   #192.168.119.129为取东西主机的ip
[root@bogon ~]# cd /opt
[root@bogon opt]# ls
hosts


(3)rsync守护进程模式

首先要搭建rsync服务端(要有守护进程),然后才能在客户端实现推拉数据,这是企业运维的重要模式,重点重点重点!!!!! 服务器端守护进程,客户端执行命令

拉:从远端拉取到本地:

语法1(常用)
rsync 参数 虚拟用户@主机地址::模块名 本地路径
语法2
rsync 参数 rsync://虚拟用户@主机地址/模块名 本地路径

推:从本地推到远端:

语法1(常用)
rsync 参数 本地路径 虚拟用户@主机地址::模块名
语法2
rsync 参数 本地路径 rsync://虚拟用户@主机地址/模块名

准备工作
记得先把防火墙以及selinux关掉不然有想不到的错误(在/etc/selinux/config改为SELINUX=disabled)

守护进程客户端,服务器端的配置:
服务器端:
1:首先将/etc/rsyncd.conf备份为/etc/rsyncd.conf.ori,再将源文件配置成如下模样:

# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = rsync            #管理备份目录的用户
gid = rsync            #管理备份目录的用户组
use chroot = no        #安全功能,数据是否锁定到备份目录
fake super = yes       #不需要daemon以root运行
max connections = 200  #并发连接,同时多少客户端访问
timeout = 600          #超时时间
pid file = /var/run/rsyncd.pid    #进程号所在文件
lock file = /var/run/rsync.lock   #锁文件
log file = /var/log/rsyncd.log    #日志文件,查看报错等
ignore errors          #忽略错误
read only = false      #可写
list = false   #不允许列表
hosts allow = 192.168.119.0/24      #哪些主机可以访问
auth users = rsync_backup           #远程虚拟连接用户
secrets file = /etc/rsync.password  #存放密码的文件
[backup]   #模块名,远程访问使用模块名访问
comment = welcome to oldboyedu backup!   #说明注释
path = /backup/      #服务器端用户备份的目录,用户和组,rsync:rsync

2:创建用户,创建备份目录以及修改备份目录的属主与属组

[root@backup ~]# useradd rsync 
[root@backup ~]# id rsync
uid=1001(rsync)  gid=1001(rsync)  组=1001(rsync)
[root@backup ~]#mkdir -p /backup
[root@backup ~]#chown -R rsync:rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 19 3月   9 21:12 /backup/

3、给密码文件设置用户,密码,授予600的权限

 [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.password
 [root@backup ~]#chmod 600 /etc/rsync.password
 [root@backup ~]# cat /etc/rsync.password
 rsync_backup:123456


客户端:
1、设置环境变量

[root@nfs01 ~]#echo ' export RSYNC_PASSWORD=123456' >>/etc/bashrc
[root@nfs01 ~]# tail -1 /etc/bashrc
 export RSYNC_PASSWORD=123456
[root@nfs01 ~]# . /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
123456

2、将密码写入到密码文件并授权

[root@nfs01 ~]# echo "123456" > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password

结果:
测试从客户端实现增量复制(推)

客户端操作:
[root@nfs01 ~]# rsync -avz /etc rsync_backup@192.168.119.129::backup   #先拷贝/etc目录过去
[root@nfs01 ~]# touch /etc/oldboy.txt  #这是创建一个新文件,复制时只复制增加的这个文件
[root@nfs01 ~]# rsync -avz /etc rsync_backup@192.168.119.129::backup
sending incremental file list
etc/
etc/oldboy.txt

sent 46,257 bytes  received 662 bytes  93,838.00 bytes/sec
total size is 27,503,040  speedup is 586.18

三、rsync各功能及案例

(1)排除

      - - exclude   排除参数
[root@nfs01 data]# touch {a..d}
[root@nfs01 data]# rsync -avz /data/ --exclude={a..b} rsync_backup@192.168.119.129::backup
sending incremental file list
./
c
d
       - - exclude-from   从文件中排除 
[root@nfs01 data]# touch {10..20}
[root@nfs01 data]# ls
10  11  12  13  14  15  16  17  18  19  20
[root@nfs01 data]# seq 10 15 >paichu.txt
[root@nfs01 data]# cat paichu.txt
10
11
12
13
14
15
[root@nfs01 data]# rsync -avz /data/ --exclude-from=./paichu.txt rsync_backup@192.168.119.129::backup
sending incremental file list
./
16
17
18
19
20
paichu.txt

(2)删除

rsync作为镜像,相当于raid1,让两台服务器目录保持一致

[root@nfs01 data]# rm -f *
[root@nfs01 data]# ls
[root@nfs01 data]# rsync -avz --delete /data/ rsync_backup@192.168.119.129::backup
sending incremental file list
deleting paichu.txt
deleting hosts
deleting d
deleting c
deleting 20
deleting 19
deleting 18
deleting 17
deleting 16
./



在服务器端查看
[root@backup ~]# ls /backup/
[root@backup ~]#

(3)添加模块

首先 vim /etc/rsyncd.conf文件,在尾行添加下列模块

[data]
path = /data

然后创建这个模块的目录,以及授予属主和属组,查看一下最后重启服务

[root@backup ~]# mkdir -p /data
[root@backup ~]# chown -R rsync:rsync /data
[root@backup ~]# ls -ld /data
drwxr-xr-x 2 rsync rsync 6 12月  5 16:34 /data
[root@backup ~]# systemctl restart rsyncd

在客户端测试一下( /data指整个data目录,/data/指data目录下内容)

[root@nfs01 ~]# cd /data/
[root@nfs01 data]# ls
[root@nfs01 data]# touch {a..c}
[root@nfs01 data]# ls
a  b  c
[root@nfs01 data]# rsync -avz /data/ rsync_backup@192.168.119.129::data
sending incremental file list
./
a
b
c

在服务端查看

[root@backup ~]# ls /data/
a  b  c
 类似资料: