手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

使用rsync实现数据实时同步备份

[日期:2017-05-05] 来源:Linux社区  作者:blxueyuan [字体: ]

实验目标

rsync 远程同步

实战1: 备份/var/www/html 目彔

实战2: 使用ssh密钥实现无交互备份

实战3: 配置rsync 服务器及需要备份的目彔,不使用系统用户 

实战4: 配置rsync+inotify实时同步

实战5 防止网页被篡改

实验概述

软件简介

Rsync ( Remote sync)是一个远程数据同步工具,使用与unix/Linux/windows等多种平台。  可通过LAN/WAN 快速同步多台主机间的文件。Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护。Rsync 使用所谓的“Rsync 演算法来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server,一个 Rsync server 可同时备份多个 client 的数据;也可以多个Rsync server 备份一个 client 的数据。

Rsync 可以搭配 rsh ssh 甚至使用 daemon 模式。Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。连接时,Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

Rsync 支持大多数的类 Unix 系统,无论是 LinuxSolaris 还是 BSD 上都经过了良好的测试。此外,它在windows 平台下也有相应的版本,比较知名的有 cwRsync Sync2NAS

Rsync 的基本特点如下:

可以镜像保存整个目录树和文件系统;
可以很容易做到保持原来文件的权限、时间、软硬链接等;
无须特殊权限即可安装;
优化的流程,文件传输效率高;
可以使用 rcpssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
支持匿名传输。

Rsync优点: 

支持增量备份。

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

传输前执行压缩。适用于异地备份 ,镜像服务器等应用

使用ssh做为传输端口。 sftp  ssh  xshell

Rsync和scp的区别:

当文件数据很大时候:  scp  无法备份大量数据, 特点: 先统一信息,像windows复制。

scp每次拷贝都是完整拷贝。无法增量拷贝。rsync 边复制,边比较,边统计。  

端口: 873   模式:C/S

Rsync同步备份的原理

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源

 

wKiom1j4b4Xhac6HAADGaB5UfDc234.png 

 首先服务器B(发起源)向服务器A(同步源)进行数据备份,将自己的数据备份到服务器A中。当服务器B中的数据遭到损失或者增量的时候,都会从服务器A中进行数据同步。服务器B数据丢失则从服务器A中同步数据丢失的部分。当服务器B数据增多了,就会再次向服务器A进行数据备份,但是备份的不是完整备份,而是增量备份,即备份同步源中没有的数据。

实验步骤

1:实验环境搭建

安装rsync:- - -查看一下rsync是有那个包安装的

[root@xuegod-63 ~]# rpm -qf `which rsync`

rsync-3.0.6-5.el6_0.1.x86_64

安装xinetd服务来管理rsync服务

[root@xuegod-63 ~]# rpm -ivh /mnt/Packages/xinetd-2.3.14-33.el6.x86_64.rpm

#rsync是由xinetd包管理的,因此只需要安装xinetd包就OK了,并不需要安装rsync的包

开启rsync服务:

[root@xuegod-63 ~]# vim /etc/xinetd.d/rsync

改:disable = yes

为:disable = no

[root@xuegod-63 ~]# /etc/init.d/xinetd restart

rsync监听端口873/tcp

[root@xuegod-63 ~]# vim /etc/services

wKioL1j4b5ST7DumAAAnbBF7srY244.png 

[root@xuegod-63 ~]# netstat -anutp | grep 873

tcp        0      0 :::873    :::*       LISTEN      8876/xinetd      

#可以看到873端口是由xinetd包管理的 

反查一下这个端口

[root@xuegod-63 ~]# lsof -i:873

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

xinetd  8876 root    5u  IPv6  40238      0t0  TCP *:rsync (LISTEN)

rsync命令的基本用法:

格式:rsync 【选项】 源文件 目标文件

查看rsync的命令参数

[root@xuegod-63 ~]# rsync -h

-a,--archive(存档) 归模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数-rlptgoD

-r,–recursive 对子目录以递归模式处理

-l,--links 表示拷贝链接文件

-p , --perms 表示保持文件原有权限

-t , --times 表示保持文件原有时间

-g , --group 表示保持文件原有属用户组

-o , --owner 表示保持文件原有属主

-D , --devices 表示块设备文件信息

-z , --compress 表示压缩传输

-H 表示硬连接文件

-A 保留ACL属性信息

-P 显示传输进度

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

--port=PORT 指定其他的rsync服务端口  873

--delete 删除那些目标位置有而原始位置没有的文件

--password-file=FILE FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,Kbytes /second

--filter - 文件名”需要过滤的文件

--exclude= :需要过滤的文件

-v 显示同步过程的详细信息

实战1

备份/var/www/html 目录。创建用户rget 1用于下载,读;创建用户rput1 用于上传,写。 客户端与服务端进行数据同步。

服务器 xuegod-63  192.168.1.63

客户端 xuegod-64  192.168.1.64

扩展:

setfacl   命令可以用来细分linux下的文件权限

getfacl   查看文件的权限

setfacl和chmod有什么区别

chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。 比较常用的用法如下:

setfacl –m u:apache:rwx file #设置apache用户对file文件的rwx权限

setfacl –m g:market:rwx file #设置market用户组对file文件的rwx权限

setfacl –x g:market file #删除market组对file文件的所有权限

 

创建用户并设置密码

[root@xuegod-63 ~]# useradd rget1

[root@xuegod-63 ~]# useradd rput1

[root@xuegod-63 ~]# echo 123456 | passwd --stdin rget1

[root@xuegod-63 ~]# echo 123456 | passwd --stdin rput1

 

设置权限

[root@xuegod-63 ~]# setfacl -R -m user:rget1:rwx /var/www/html/

#指定rgut1用户可以对目录/var/www/html/拥有读写执行权限

[root@xuegod-63 ~]# setfacl -R -m default:user:rget1:rwx /var/www/html/ #再设置默认权限

#设置默认情况下rgut1用户可以对/var/www/html/下,所有文件拥有可读写权限

[root@xuegod-63 ~]# setfacl -R -m user:rput1:r-x /var/www/html/

[root@xuegod-63 ~]# setfacl -R -m default:user:rput1:r-x /var/www/html/

 

查看权限

[root@xuegod-63 ~]# getfacl /var/www/html/

# file: var/www/html/

user:rget1:rwx

user:rput1:r-x

#可以看到新增加的用户rget1具有的读写执行的权限和用户rput1具有读和执行的权限

 

开始备份:

xuegod-63: 创建用于测试的数据

[root@xuegod-63 ~]# cp -r /boot/grub/ /var/www/html/

 

xegod-64:同步数据

[root@xuegod-64 ~]# mkdir /web-back

[root@xuegod64 ~]# cp /etc/passwd /web-back/

[root@xuegod-64 ~]# rsync -azP --delete rget1@192.168.1.63:/var/www/html/ /web-back/

#同步源1.63服务端的/var/www/html/下的文件数据同步到1.64下的/web-back/目录下并且删除发起源1.64客户下不同于同步源1.63服务端下的文件,这里的目标位置指的就是1.64客户端。

rget1@192.168.1.63's password:

报错:

……

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

grub/iso9660_stage1_5                                 #这里提示没有权限

 

解决:找到文件扩大权限

[root@xuegod-63 ~]# ll /var/www/html/grub/grub.conf

-rw-------+ 1 root root 787 Apr  9 19:17 /var/www/html/grub/grub.conf

[root@xuegod-63 ~]# cd /var/www/html/grub/

[root@xuegod-63 grub]# chmod 744 grub.conf

测试

[root@xuegod-64 ~]# rsync -azP --delete rget1@192.168.1.63:/var/www/html/ /web-back/

rget1@192.168.1.63's password:

grub/grub.conf #这是需要增加权限的文件

         761 100%  743.16kB/s    0:00:00 (xfer#1, to-check=11/18)

[root@xuegod64 ~]# ls /web-back/

grub

#可以看到新加了一个文件之前复制进去的passwd文件被删除了。

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2017-05/143462p2.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款