使用rsync实现服务器数据同步备份

简介:

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

实验目标

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文件被删除了。

 

实战2:

使用ssh密钥实现无交互备份。做成脚本,将xuegod-63上的数据,定期备份到xuegod-64上。  

 

生成公私钥并拷贝

[root@xuegod-64 ~]# ssh-keygen  #产生主机的公钥和私钥 

[root@xuegod-64 ~]# ssh-copy-id rget1@192.168.1.63 #拷贝自己的公钥到要登录的服务器1.63

 

测试,不输密码直接连接:

[root@xuegod-64 ~]# ssh rget1@192.168.1.63  #测试登陆

[rget1@xuegod-63 ~]$ exit  #成功的登陆,且不需要输入密码

 

测试,不输密码直接登录和备份:

[root@xuegod-64 ~]# ls /web-back/ #先查看到在web-back目录下有grub这个目录

Grub

[root@xuegod-64 ~]# rm -rf /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/目录下,我们可以看到

远程备份是不需要任何密码的!

 

 

编写备份脚本:

[root@xuegod-64 ~]# ls /web-back/ #显示此目录下有一个grub目录

Grub

[root@xuegod-64 ~]# vim /root/rsync-ssh-get-wwwroot.sh  #编写一个脚本将1.63/var/www/html/下的文件备份到本机1.64下的/web-back/目录下

#! /bin/bash

rsync -azP --delete rget1@192.168.1.63:/var/www/html/ /web-back/

#在这里,就把P参数去掉了,因为是后期执行备份,看不见所备份的进度。

 

增加权限并查看脚本

[root@xuegod-64 ~]# chmod +x rsync-ssh-get-wwwroot.sh  #给脚本就一个课执行的权限

[root@xuegod-64 ~]# cat /root/rsync-ssh-get-wwwroot.sh  #查看所编写的脚本

#! /bin/bash

rsync -azP --delete rget1@192.168.1.63:/var/www/html/ /web-back/

 

测试脚本:

[root@xuegod-64 ~]# rm -rf /web-back/* #先删除这个目录下的所有文件

[root@xuegod-64 ~]# ls /web-back/  #查看目录,目录下什么都没有

[root@xuegod-64 ~]# ./rsync-ssh-get-wwwroot.sh  #运行脚本,可以看到那些文件再一次过来

grub/device.map

          63 100%   61.52kB/s    0:00:00 (xfer#1, to-check=15/18)

grub/e2fs_stage1_5

       13380 100%   12.76MB/s    0:00:00 (xfer#2, to-check=14/18)

……

[root@xuegod-64 ~]# ls /web-back/  #可以看到,刚才的文件又出来了

Grub

 

定期增量备份:

[root@xuegod-64 ~]# crontab –e  #脚本以生成,为了以后方便使用,所以创建一个计划任务

01 3 * * * /root/rsync-ssh-get-wwwroot.sh &

#每天在31分的时候 进行备份

 

备份完后,再在xuegod-64上打包

[root@xuegod-64 ~]# tar cvzf aaa.tar.gz /web-back/

 

实战3:

配置rsync 服务器及需要备份的目录,不使用系统用户需要自己创建自己的配置文件:  /etc/rsyncd.conf   ; 创建备份帐户最后把rsync 以daemon方式运行。

配置文件:/etc/rsyncd.conf   整体分两部分:

全局参数 :对于rsync 生效。如果模块参数和全局参数冲突,针对冲突模块的模块参数生效

模块参数: 定义rsync 输出的目录的参数。

 

无交互备份数据

编辑配置文件

[root@xuegod-63 ~]# vim /etc/rsyncd.conf

uid=nobody

gid=nobody

address = 192.168.1.63 

port=873 

hosts allow= 192.168.1.64

#hosts deny=0.0.0.0/32 

use chroot=yes 

max connections=5 

pid file=/var/run/rsyncd.pid 

lock file=/var/run/rsync.lock

log file=/var/log/rsyncd.log

motd file=/etc/rsyncd.motd

 

[wwwroot]       

path=/var/www/html 

comment=rsync wwwroot of www.xuegod.cn

read only=yes

list=yes

auth users=backuper

secrets file=/etc/rsync.passwd

 

此配置文件,参数 说明:

全局参数

uid=nobody     #运行进程的身份

gid=nobody    # 运行进程的组

address = 192.168.1.63   #监听IP地址

port=873    #端口

hosts allow= 192.168.1.64 192.168.0.25  #允许同步的客户端IP地址

单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,

整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0

“*”则表示所有,默认是允许所有主机连接。

#hosts deny=0.0.0.0/32

use chroot=yes   #锁定家目录。rsync被黑了,黑客无法在rsync运行的家目录之外创建文件,该选项设置为yes。

max connections=5   #最大链接数

pid file=/var/run/rsyncd.pid   # pid文件。存放进程ID。自动生成

lock file=/var/run/rsync.lock  #指定支持max connections参数的锁文件。

log file=/var/log/rsyncd.log  #日志

motd file=/etc/rsyncd.motd  #客户端登录后的弹出的信息。需要创建。子配置

 

模块参数:

[wwwroot]        #共享模块名

path=/var/www/html   #供备份的路径

comment=rsync wwwroot of www.xuegod.cn  # 描述

read only=yes  # 以只读的方式 提供备份

list=yes   #允许查看模块信息

auth users=backuper   #指定备份的用户,和系统用户 无关

secrets file=/etc/rsync.passwd   #指点存放用户 和密码文件。格式: 用户名:密码

 

过滤子配置文件并追加信息到子配置文件

[root@xuegod-63 ~]# grep motd /etc/rsyncd.conf

motd file=/etc/rsyncd.motd  

#过滤是为了查找到各“子配置”文件在rsyncd.conf这个“总配置”文件中默认叫啥名,是怕“子配置”文件名创建错了才这么弄的。由此我们可以看到,子配置文件motd/etc/rsyncd.motd/

[root@xuegod-63 ~]# echo "welconme to backup server" > /etc/rsyncd.motd # "welconme to backup server"的欢迎信息写入到子配置文件中去

 

过滤passwd子配置文件并设置密码和修改权限

[root@xuegod-63 ~]# grep passwd /etc/rsyncd.conf

secrets file=/etc/rsync.passwd

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

backuper:123456

[root@xuegod-63 ~]# chmod 600 /etc/rsync.passwd

#设置rsyncd_users.db文件的权限为700600,权限设置不对的话身份验证会失败

会弹以下出错信息,当然,输错密码后,也会弹这个信息:

 

重启xinetd服务:

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

 

清空/web-back/目录下的文件

[root@xuegod-64 ~]# rm -rf /web-back/* #清空以后,在wen-back下什么都没有了

 

无交互备份

[root@xuegod-64 ~]# rsync -azv backuper@192.168.1.63::wwwroot /web-back/ #1.63下的用户backuper的文件备份到本机1.64/web-back/

welconme  to backup server

Password:

grub/

grub/device.map

grub/e2fs_stage1_5

 

再次查看目录

[root@xuegod-64 ~]# ls /web-back/  #现在此目录下 又有了grub目录了

grub

#这样就可以备份了

 

无交互不输密码进行备份

删除备份到的目标目录下文件

[root@xuegod-64 ~]# rm -rf /web-back/*

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

 

定义变量export环境变量,免密码rsync

[root@xuegod-64 ~]# export RSYNC_PASSWORD=123456

 

无交互备份

[root@xuegod-64 ~]# rsync -azv backuper@192.168.1.63::wwwroot /web-back/

# rsync  选项  用户名@备份源服务器IP::共享模块名   目标目录

#1.63下的用户backuper的文件备份到本机1.64/web-back/

welconme  to backup server

grub/

grub/device.map

 

查看备份的目标目录

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

Grub # 这时所需要被备份的目录被备份过来了

 

再次删除备份到的目标目录下文件

[root@xuegod-64 ~]# rm -rf /web-back/*

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

 

编写脚本

[root@xuegod-64 ~]# vim backup.sh

#!/bin/bash

export RSYNC_PASSWORD=123456

rsync -azv backuper@192.168.1.63::wwwroot /web-back/

 

增加权限并备份

[root@xuegod-64 ~]# chmod +x backup.sh 

[root@xuegod-64 ~]# ./backup.sh   

welconme  to backup server

grub/device.map

grub/e2fs_stage1_5

#这个时候我们可以看到,备份文件不再需要输入密码了

 

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

grub

#文件已被备份过来了

 

编写计划任务

[root@xuegod-64 ~]# crontab -e

01 3 * * * /root/backup.sh &

#任务在每天的31分进行数据备份

 

添加防火墙规则:

[root@xuegod63 ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT #让防火墙对873端口进行放行

[root@xuegod63 ~]# /etc/init.d/iptables save  #保存防火墙规则

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

 

 

实战4:

目标:

配置rsync+inotify实时同步

xuegod63.cn服务器上的/var/www/html目录时实同步到xuegod64.cn主机上的/web-back目录中。

 

概述

Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。

 

环境

inotify-tools服务端:xuegod-63   IP:192.168.1.63

客户端:xuegod-64   IP:192.168.1.64

查看是否支持inotify,从kernel 2.6.13开始正式并入内核。

 

 

[root@xuegod-63 ~]# uname -r

2.6.32-220.el6.x86_64

[root@xuegod-63 ~]# ls /proc/sys/fs/inotify/

max_queued_events  max_user_instances  max_user_watches

注:

linux内核中,默认的inotify机制提供了三个调控参数:

max_queued_events   #表示监控事件队列

max_user_instances  #表示最多监控实例数

max_user_watches   #表示每个实例最多监控文件数

 

查看具体参数值:

[root@xuegod-63 ~]# cat  /proc/sys/fs/inotify/max_queued_events

16384

[root@xuegod-63 ~]# cat  /proc/sys/fs/inotify/max_user_instances

128

[root@xuegod-63 ~]#  cat  /proc/sys/fs/inotify/max_user_watches

8192

注:当要监控的目录、文件数量较多或者变化较频繁时,要加大这三个参数的值。

例如:可直接修改/etc/sysctl.conf配置文件,将管理队列设为32768,实例数设为1024,监控数设为9000000(建议大于监控目标的总文件数)

 

自改配置文件

[root@xuegod-63 ~]# vim /etc/sysycrl.conf  #以文件最后,添加以下内容

fs.inotify.max_queued_events = 32768

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 90000000

[root@xuegod-63 ~]# sysctl -p  #使修改后的sysctl.conf文件生效

 

安装inotify-tools-3.13.tar:将拥有inotifywait、inotifywatch辅助工具程序,从而来监控、汇总文件系统改动情况。

[root@xuegod-63 ~]# tar -zxvf inotify-tools-3.13.tar.gz #进行都文件的解压

[[root@xuegod-63 ~]# cd inotify-tools-3.13

[root@xuegod-63 inotify-tools-3.13]# ./configure

[root@xuegod-63 inotify-tools-3.13]# make -j 4

[root@xuegod-63 inotify-tools-3.13]# make  install

 

测试:

使用inotifywait命令监控网站目录/var/www/html发生的变化。然后在另一个终端向/var/www/html目录下添加文件、移动文件,查看屏幕输出结果。

 

[root@xuegod63 ~]# inotifywait -h   

常用参数:

-e  用来指定要监控哪些事件。

这些事件包括: create创建,move移动,delete删除,modify修改文件内容,attrib属性更改。

-m 表示持续监控

-r  表示递归整个目录

-q 表示简化输出信息。

 

1.63上打开两个终端

1终端上开启监控

[root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

#开启的监控具有创建,移动,删除和修改功能,监控到/var/www/html/下的数据变化‘

 

2终端上进行创建,移动,删除等命令

[root@xuegod-63 ~]# echo aaa > /var/www/html/a.htal

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

[root@xuegod-63 ~]# cp /etc/passwd /var/www/html/test/

[root@xuegod-63 ~]# rm -rf /var/www/html/test/passwd

 

查看1终端上的数据信息变化

[root@xuegod-63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

/var/www/html/test/ CREATE passwd

/var/www/html/test/ MODIFY passwd

/var/www/html/test/ DELETE passwd

#我们可以看到,刚才在2终端上的命令意义在2终端上一一呈现出来了,这样就成功的监视了/var/www/html/的数据变化情况!使用inotifywait输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。

编写触发式同步脚本

 

第一步,

同步时不需要输入密码:

xuegod63发生变化后,直接将发生变化的数据同步到xuegod64,同步时不需要输入密码

同步秘钥

[root@xuegod-63 ~]# ssh-keygen #生成主机1.63的公私钥匙

[root@xuegod-63 ~]# ssh-copy-id root@192.168.1.64拷贝自己的公钥到要登录的服务器1.64上

测试

[root@xuegod-63 ~]# ssh 192.168.1.64

Last login: Sun Aug 23 14:13:38 2015 from 192.168.1.63

[root@xuegod-64 ~]# exit

#已经成功无需密码登陆远程客户端了

 

第二步:

编写触发式同步脚本

[root@xuegod-63 ~]# vim a.sh

#!/bin/bash

inotifywait -mrq -e create,move,delete,modify /var/www/html/  | while read a b c

do

rsync -azP --delete /var/www/html/ root@192.168.1.64:/web-back

done

 

给脚本添加课执行权限

[root@xuegod-63 ~]# chmod +x a.sh

 

清空一下/var/www/html/下的所有内容

[root@xuegod-63 ~]# rm -rf  /var/www/html/*

 

1终端上执行脚本

[root@xuegod-63 ~]# ./a.sh

 

2终端上测试拷贝文件及创建目录

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

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

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

 

1终端上查看执行脚本

[root@xuegod-63 ~]# ./a.sh

wKiom1j4b6qD1080AAA1X7CBDhA744.png 

看到

1.64上查看目录

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

111  grub  test

 

开机启动监控

[root@xuegod-63 ~]# echo '/root/a.sh &' >> /etc/rc.local

 

优化此脚本:

[root@xuegod63 ~]# vim a.sh

#!/bin/sh

SRC=/var/www/html

DST=root@192.168.1.64:/web-back

inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F  

        do

                /usr/bin/rsync -ahqzt --delete $SRC $DST

        done

[root@xuegod63 ~]# cp /root/a.sh /opt/inotify_rsync.sh

[root@xuegod63 ~]# echo '/opt/inotify_rsync.sh &'  >> /etc/rc.local

 

实战5:

防止网页被篡改

修改配置文件

[root@xuegod-63 ~]# vim a.sh

#!/bin/bash

inotifywait -mrq -e create,move,delete,modify /var/www/html/  | while read a b c

do

rsync -azP --delete  root@192.168.1.64:/web-back/ /var/www/html/

#rsync -azP --delete /var/www/html/ root@192.168.1.64:/web-back


done

#脚本的意义是只要一有人修改页面,脚本就会自动运行,网页就会自动恢复到原来的页面状态,因此是修改不了网页页面的

 

测试:

[root@xuegod-63 ~]# /root/a.sh  #执行这个命令

[root@xuegod-63 html]# echo aaa > a.html

 

查看:

[root@xuegod-63 ~]# /root/a.sh    #弹出的信息

receiving incremental file list

deleting a.html

sent 17 bytes  received 410 bytes  854.00 bytes/sec

total size is 255156  speedup is 597.56

receiving incremental file list

sent 14 bytes  received 407 bytes  280.67 bytes/sec

total size is 255156  speedup is 606.07

receiving incremental file list

sent 14 bytes  received 407 bytes  842.00 bytes/sec

total size is 255156  speedup is 606.07

#这个时候脚本就会自动监视着页面,出现变更,就会弹出此信息和恢复到原来的页面!










本文转自 于学康 51CTO博客,原文链接:http://blog.51cto.com/blxueyuan/1917818,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
运维 Linux Windows
【计算巢】幻兽帕鲁服务器如何设置定时备份存档
计算巢针对幻兽帕鲁服务器,提供给了定时备份存档的功能,会在设定的频率下,定时将存档文件备份到目标文件夹下,有助于解决存档丢失和坏档的问题。
3170 1
|
3月前
|
监控 测试技术 网络安全
基于阿里云计算巢部署的幻兽帕鲁服务器我该如何设置计划任务定时备份和重启,以及存档导入导出
基于阿里云计算巢部署的幻兽帕鲁服务器我该如何设置计划任务定时备份和重启,以及存档导入导出
|
5月前
|
SQL 弹性计算 运维
云备份(Cloud Backup)ECS备份基础版——超好用的ECS数据保护方案
ECS备份基础版是阿里云云备份(Cloud Backup,原混合云备份HBR)全新推出的ECS数据保护方案,配置简单、预算可控,同时支持ECS文件、自建数据库和整机的保护。ECS基础版属于预付费商品,可为每台ECS保护最多500G数据。
83677 0
|
2月前
|
存储 弹性计算 对象存储
ECS快照问题之备份ECS快照失败如何解决
阿里云ECS用户可以创建的一个虚拟机实例或硬盘的数据备份,用于数据恢复和克隆新实例;本合集将指导用户如何有效地创建和管理ECS快照,以及解决快照过程中可能遇到的问题,确保数据的安全性和可靠性。
|
29天前
|
SQL 存储 弹性计算
ECS备份问题之添加批量备份如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
29天前
|
存储 域名解析 弹性计算
ECS备份问题之HBR混合云备份如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
3月前
|
JSON NoSQL 网络安全
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1
41 0
|
4月前
|
监控 网络安全 开发工具
Linxu服务器文件双向同步-rsync+sersync
Linxu服务器文件双向同步-rsync+sersync
54 0
|
4月前
|
存储 弹性计算 监控
ecs实例备份
ecs实例备份ecs实例备份
92 1
|
5月前
|
缓存 jenkins Java
3分钟教你linux服务器无损迁移备份Jenkins
3分钟教你linux服务器无损迁移备份Jenkins一台服务器到期,jenkins正好部署在这台服务器,这时候如果在新服务器重新安装然后配置jenkins的每个服务时间两天起步,于是考虑将原服务器jenkins无损迁移到新服务器上,时间只需3分钟,nice
160 0

热门文章

最新文章