rsync实现数据备份详解(2)

三、rsync数据备份

1. RSYNC概述: 

  RSYNC是Remote Sync 远程同步的简称,与SCP的比较,SCP= 无法备份大量数据,类似windows的复制,而rsync=边复制 ,边统计,边比较,可以备份大量数据。

 Rysnc特性和优点

  可以镜像保存整个目录树和文件系统。

  可以很容易做到保持原来文件的权限、时间、软硬链接等等。

  无须特殊权限即可安装。

  快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。

  压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

  安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

  支持匿名传输,以方便进行网站镜象。

  选择性保持:符号连接,硬链接,文件属性,权限,时间等。

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

常见备份分类

  完整备份,差异备份,增量备份

  完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地

  差异备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)

  增量备份:备份上次备份以后有变化的数据.(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

运行模式和端口

采用C/S模式(客户端/服务器模式)

[ 就是一个点到点的传输,直接使用rsync命令 ]  端口873

 

发起端和备份源

四个名词的解释:

发起端:负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据

备份源:负责相应来自客户机rsync同步操作的服务器在备份源,需要备份的服务器

服务端:运行rsyncd服务,一般来说,需要备份的服务器

客户端:存放备份数据

数据同步方式

推push:一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况

拉pull:所有主机定时去找一主机拉数据,可能就会导致数据缓慢

推:目的主机配置为rsync服务器,源主机周期性的使用rsync命令把要同步的目录推过去(需要备份的机器是客户端,存储备份的机器是服务端)

拉:源主机配置为rsync服务器,目的主机周期性的使用rsync命令把要同步的目录拉过来(需要备份的机器是服务端,存储备份的机器是客户端)

两种方案,rsync都有对应的命令来实现

 

Xinetd管理Rsync工作原理 

       使用rsync来同步是先通过xinetd监听873号端口,如果rsync进来的是873号端口,那么xinetd就会通知它所管辖的rsync服务来做回应,接下来就是rsync俩服务于之间的通讯。

Rsync服务安装

       实验拓扑:

        xiaolyu76(Server 192.168.31.76)====xiaolyu77(Client 192.168.31.77)

Rsync服务依赖Xinetd,是使用超级服务来管理的

  yum 安装:

[root@xiaolyu76 ~]# yum install -y xinetd   

 

rsync实现数据备份详解

rsync实现数据备份详解

[root@xiaolyu76 ~]# vim /etc/xinetd.d/rsync

rsync实现数据备份详解

[root@xiaolyu76 ~]# /etc/init.d/xinetd restart      #重启xinetd。

[root@xiaolyu76 ~]# netstat -antup | grep 873    #查看873号端口是否是xinetd。

rsync实现数据备份详解

Rsync命令

       rsync命令和scp命令很相似,可以man rsync看一下。

rsync实现数据备份详解

-a, --archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等

-r, --recursive 复制所有下面的资料,递归处理

-p, --perms 保留档案权限 ,文件原有属性

-t, --times 保留时间点,文件原有时间

-g, --group 保留原有属组

-o, --owner 保留档案所有者(root only)

-D, --devices 保留device资讯(root only)

-l, --links 复制所有的连接 ,拷贝连接文件

-z, --compress 压缩模式, 当资料在传送到目的端进行档案压缩.

-H, --hard-links 保留硬链接文件

-A, --acls 保留ACL属性文件,需要配合--perms

-P,-P参数和 --partial --progress 相同.只是为了把参数简单化,表示传进度

--version, 输出rsync版本

-v , --verbose 复杂的输出信息

-u, --update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件

--port=PORT, 定义rsyncd(daemon)要运行的port(预设为tcp 873)

--delete, 删除那些目标位置有的文件而备份源没有的文件

--password-file=FILE ,从 FILE 中得到密码

--bwlimit=KBPS, 限制 I/O 带宽

--filter “-filename”,需要过滤的文件

--exclude=filname,需要过滤的文件

--progress,显示备份过程

常用的 –avz

使用rsync备份数据

对xiaolyu76网站根目录的/var/www/html目录备份到xialyu77的/web-back 

2.  用系统用户,实现rsync远程数据备份

1. 建立测试用户

[root@xiaolyu76 ~]# useradd rget1                                    //测试用户,rget1用于下载
[root@xiaolyu76 ~]# echo rget1:123456 | chpasswd
[root@xiaolyu76 ~]# useradd rput1;echo rput1:123456 | chpasswd   //测试用户,rput1用户上传、

对目录赋予ACL权限

[root@xiaolyu76 ~]# setfacl -R -m user:rput1:rwx /var/www/html/  //rput1用户可以对目录拥有读写权限
[root@xiaolyu76 ~]# setfacl -R -m default:user:rput1:rwx /var/www/html/ //设置默认情况下,rput1对目录/var/www/html下的所有文件拥有读写权限

[root@xiaolyu76 ~]# setfacl -R -m user:rget1:rwx /var/www/html/
[root@xiaolyu76 ~]# setfacl -R -m default:rget1:rwx /var/www/html/
[root@xiaolyu76 ~]# getfacl --omit-header /var/www/html
getfacl: Removing leading '/' from absolute path names
user::rwx
user:rget1:rwx
user:rput1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:rget1:rwx
default:user:rput1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

rsync实现数据备份详解

2. 数据的准备工作;

[root@xiaolyu76 ~]# cp -r /boot/* /var/www/html/     #  /boot目录下的所有数据作为测试数据。

rsync实现数据备份详解

注意:因为我们这里在创建测试用户的时候,针对某一个用户赋予某一个目录的ACL默认权限,这实际上是用到了ACL的权限继承。ACL的权限继承只有在设置好目录的默认权限之后,在该目录下,新创建的文件才可以继承该目录的权限。所以一定要在创建用户和ACL权限设置完成后,再做测试数据的准备工作。

3.开始测试:

       //boot目录下的所有数据作为测试数据

 [root@xiaolyu77 ~]# rsync -avz --delete rget1@192.168.31.76:/var/www/html/ /web-back/

格式几乎同scp一模一样,所以在前面详细讲了scp的用法。

              ……

rsync: send_files failed to open "/var/www/html/initramfs-2.6.32-431.el6.x86_64.img": Permission denied (13)

……

 

……

rsync: send_files failed to open "/var/www/html/grub/grub.conf": Permission denied (13)

#几行报错,排错

rsync实现数据备份详解

同步数据出错排查:根据我们前面对acl文件的了解,显然acl文件出现权限问题,第一步就是getfacl查看实际权限。

[root@xiaolyu76 ~]# getfacl --omit-header /var/www/html/initramfs-2.6.32-431.el6.x86_64.img

[root@xiaolyu76 ~]# getfacl --omit-header /var/www/html/initramfs-2.6.32-431.el6.x86_64.img

[root@xiaolyu76 ~]# getfacl --omit-header /var/www/html/lost+found

rsync实现数据备份详解

rsync实现数据备份详解

显然,由于我们前面的分析,知道因为mask没有权限,所以rget1实际上没有任何权限。解决方法就是加上权限。

rsync实现数据备份详解

解决方法:添加权限。

[root@xiaolyu76 ~]# chmod 744 /var/www/html/initramfs-2.6.32-431.el6.x86_64.img
[root@xiaolyu76 ~]# getfacl --omit-header /var/www/html/initramfs-2.6.32-431.el6.x86_64.img

rsync实现数据备份详解

同理方法修改

/var/www/html/grub/grub.conf

/var/www/html/lost+found

[root@xiaolyu76 ~]# chmod 744 /var/www/html/grub/grub.conf
[root@xiaolyu76 ~]# chmod 744 /var/www/html/lost+found

再次客户端测试

[root@xiaolyu77 ~]# rm -rf /web-back/*
[root@xiaolyu77 ~]# rsync -avz --delete rget1@192.168.31.76:/var/www/html/ /web-back/

rsync实现数据备份详解

rsync实现数据备份详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7bbf65f5df5a30491413a6dbab442f27.html