rsync 远程同步html
实战1: 备份/var/www/html 目彔linux
实战2: 使用ssh密钥实现无交互备份web
实战3: 配置rsync 服务器及须要备份的目彔,不使用系统用户 算法
实战4: 配置rsync+inotify实时同步shell
实战5: 防止网页被篡改apache
软件简介vim
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 的数据。windows
Rsync 能够搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 链接。链接时,Rsync server 会检查口令是否相符,若经过口令查核,则能够开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不一样的部份。服务器
Rsync 支持大多数的类 Unix 系统,不管是 Linux、Solaris 仍是 BSD 上都通过了良好的测试。此外,它在windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。ssh
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进行数据备份,可是备份的不是完整备份,而是增量备份,即备份同步源中没有的数据。
安装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 显示同步过程的详细信息
备份/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文件被删除了。