共计 18477 个字符,预计需要花费 47 分钟才能阅读完成。
实验目标
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 系统,无论是 Linux、Solaris 还是 BSD 上都经过了良好的测试。此外,它在 windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。
Rsync 的基本特点如下:
可以镜像保存整个目录树和文件系统;
可以很容易做到保持原来文件的权限、时间、软硬链接等;
无须特殊权限即可安装;
优化的流程,文件传输效率高;
可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
支持匿名传输。
Rsync 优点:
支持增量备份。
选择性的保持 : 符号链接,硬链接,文件属性,权限 及时间 等。
传输前执行压缩。适用于异地备份 ,镜像服务器等应用 。
使用 ssh 做为传输端口。sftp ,ssh xshell
Rsync 和 scp 的区别:
当文件数据很大时候: scp 无法备份大量数据,特点:先统一信息,像 windows 复制。
scp每次拷贝都是完整拷贝。无法增量拷贝。rsync 边复制,边比较,边统计。
端口: 873 模式:C/S
Rsync同步备份的原理
在远程同步任务中,负责发起 rsync 同步操作的客户机称为 发起端 ,而负责响应来自客机的rsync 同步操作的服务器称为 备份源。
首先服务器 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
[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/
# 指定 r gut1 用户可以 对目录 /var/www/html/ 拥有读写 执行 权限
[root@xuegod-63 ~]# setfacl -R -m default:user:rget1:rwx /var/www/html/ #再设置默认权限
# 设置默认情况下 r gut1 用户可以对 /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
实战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 &
#每天在 3 点1分的时候 进行备份
备份完后,再在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 文件的权限为 700 或600,权限设置不对的话身份验证会失败
会弹以下出错信息,当然,输错密码后,也会弹这个信息:
重启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 &
#任务在每天的 3 点1分进行数据备份
添加防火墙规则:
[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]
实验目标
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 系统,无论是 Linux、Solaris 还是 BSD 上都经过了良好的测试。此外,它在 windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。
Rsync 的基本特点如下:
可以镜像保存整个目录树和文件系统;
可以很容易做到保持原来文件的权限、时间、软硬链接等;
无须特殊权限即可安装;
优化的流程,文件传输效率高;
可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
支持匿名传输。
Rsync 优点:
支持增量备份。
选择性的保持 : 符号链接,硬链接,文件属性,权限 及时间 等。
传输前执行压缩。适用于异地备份 ,镜像服务器等应用 。
使用 ssh 做为传输端口。sftp ,ssh xshell
Rsync 和 scp 的区别:
当文件数据很大时候: scp 无法备份大量数据,特点:先统一信息,像 windows 复制。
scp每次拷贝都是完整拷贝。无法增量拷贝。rsync 边复制,边比较,边统计。
端口: 873 模式:C/S
Rsync同步备份的原理
在远程同步任务中,负责发起 rsync 同步操作的客户机称为 发起端 ,而负责响应来自客机的rsync 同步操作的服务器称为 备份源。
首先服务器 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
[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/
# 指定 r gut1 用户可以 对目录 /var/www/html/ 拥有读写 执行 权限
[root@xuegod-63 ~]# setfacl -R -m default:user:rget1:rwx /var/www/html/ #再设置默认权限
# 设置默认情况下 r gut1 用户可以对 /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
实战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
看到
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
#这个时候脚本就会自动监视着页面,出现变更,就会弹出此信息和恢复到原来的页面!
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143462.htm