实验目标
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/
#指定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/143462.htm