rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
它的特性如下: 可以镜像保存整个目录树和文件系统。 可以很容易做到保持原来文件的权限、时间、软硬链接等等。 无须特殊权限即可安装。 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 支持匿名传输,以方便进行网站镜像。rsync远程同步
一:配置rsync源服务器(服务器A)
[root@localhost ~]# systemctl stop firewalld //关闭防火墙
[root@localhost ~]# setenforce 0 //关闭selinux
[root@localhost ~]# rpm -q rsync //查看rsync软件是否安装
rsync-3.0.6-9.el6_4.1.x86_64
[root@localhost ~]# vi /etc/rsyncd.conf //修改配置文件
添加
uid = nobody //指定运行rsync软件的用户
gid = nobody //指定运行rsync软件的组
use chroot = yes //固定到共享的目录
address = 192.168.4.200 //监听本地的哪个ip地址
port 873 //监听的端口号
log file = /var/log/rsyncd.log //日志文件路径
pid file = /var/run/rsyncd.pid //进程文件路径
hosts allow = 192.168.4.0/24 //允许谁访问
[wwwroot] //共享出去的名字
path = /var/www/html //共享的本地目录
comment = Document Root of www1.benet.com //描述信息
read only = yes //是否只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z //哪些文件不做压缩
auth users = backuper //指定访问的用户
secrets file = /etc/rsyncd_users.db //用户的密码数据库
[root@localhost ~]# vi /etc/rsyncd_users.db //编辑用户密码数据库
添加
backuper:pwd123 //账号:密码
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db //修改密码数据库的权限
[root@localhost ~]# ls -ld /var/www/html/
drwxr-xr-x. 2 root root 4096 8月 2 2013 /var/www/html/
[root@localhost ~]# rsync –daemon //启动rsync
[root@localhost ~]# netstat -anpt | grep rsync //查看端口号和进程号
tcp 0 0 192.168.4.200:873 0.0.0.0:* LISTEN 13663/rsync
[root@localhost ~]# cd /var/www/html //进入目录,没有自己手动创建一个
[root@localhost html]# ls
[root@localhost html]# touch aaa //创建一个文件
二:使用rsync备份工具(服务器B)
1:命令的基本使用方法
[root@localhost ~]# systemctl stop firewalld //关闭防火墙
[root@localhost ~]# setenforce 0 //关闭selinux
[root@localhost ~]# rsync /etc/fstab /opt //本地同步测试
[root@localhost ~]# rsync -rl /etc/fstab /boot/grub /opt //本地同步目录测试
2:配置源的表示方法(从源下载数据)
[root@localhost ~]# rsync -avz backuper@192.168.4.200::wwwroot /root //远程同步
或
[root@localhost ~]# rsync -avz rsync://backuper@192.168.4.200/wwwroot /root //远程同步
3:rsync备份操作实例(下载)
[root@localhost ~]# mkdir /myweb //创建目录
[root@localhost ~]# rsync -avzH --delete backuper@192.168.4.200::wwwroot /myweb
//远程同步,保持一致
[root@localhost ~]# ls /myweb //查看是否同步
4:实现自动按计划复制
[root@localhost ~]# vi /etc/server.pass //创建密码文件
添加
pwd123 //密码
[root@localhost ~]# chmod 600 /etc/server.pass //设置权限
[root@localhost ~]# crontab -e //创建计划任务
添加(在同一行,空格隔开)
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.4.200::wwwroot /myweb/
[root@localhost ~]# systemctl restart crond //重启计划任务
[root@localhost ~]# systemctl enable crond //开机自启动计划任务
三:配置rsync+inotify实时同步
1:在源服务器上修改参数并重启rsync服务(服务器A)
[root@localhost ~]# vi /etc/rsyncd.conf
修改
read only = no
[root@localhost ~]# netstat -anpt | grep rsync
tcp 0 0 192.168.4.200:873 0.0.0.0:* LISTEN 13663/rsync
[root@localhost ~]# kill 13663
[root@localhost ~]# rsync --daemon
2:调整内核参数(服务器B)(默认的参数,不用改)
[root@localhost ~]# vi /proc/sys/fs/inotify/max_queued_events
16384 \\监控时间队列
[root@localhost ~]# vi /proc/sys/fs/inotify/max_user_instances
128 \\最多监控实例数
[root@localhost ~]# vi /proc/sys/fs/inotify/max_user_watches
8192 \\每个实例最多监控文件数
3:安装inotify
[root@localhost ~]# cd /usr/src
[root@localhost src]# tar zxf inotify-tools-3.14.tar.gz
[root@localhost src]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make
[root@localhost inotify-tools-3.14]# make install
[root@localhost inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/
-m:持续监控
-r:递归整个目录
-q:简化输出信息
打开另一个终端(输入以下命令,观察上个终端的变化)
[root@localhost ~]# cd /var/www/html
[root@localhost html]# touch index.php
[root@localhost html]# vi index.php
4:编写同步脚本
[root@localhost html]# vi /opt/inotify_rsync.sh
添加
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /var/www/html"
RSYNC_CMD="rsync -avzH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.4.200::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
done
[root@localhost html]# chmod +x /opt/inotify_rsync.sh
[root@localhost html]# echo '/opt/inotify_rsync.sh' >> /etc/rc.local
[root@localhost html]# cd /opt
[root@localhost opt]# ./inotify_rsync.sh
打开另一个终端在var/www/html中创建文件,观察上个终端的变化
在到服务器(A)上看看var/www/html中的变化