1、什么是rsyncmysql
rsync,remote synchronize是一款实现远程同步功能的软件,它在同步文件的同时,能够保持原来文件的权限、时间、软硬连接等附加信息。rsync是用 “rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,并且能够经过ssh方式来传输文件,这样其保密性也很是好,另外它仍是免费的软件。算法
2、rsync特色sql
一、能更新整个目录和树和文件系统;
二、有选择性的保持符号链链、硬连接、文件属于、权限、设备以及时间等;
三、对于安装来讲,无任何特殊权限要求;
四、对于多个文件来讲,内部流水线减小文件等待的延时;
五、能用rsh、ssh 或直接端口作为传输入端口;
六、支持匿名rsync 同步文件,是理想的镜像工具;shell
3、搭建rsync服务器:vim
备份服务器信息:bash
server:192.168.1.161服务器
系统环境:CentOS release 6.5 (Final)ssh
内核版本:2.6.32-431.el6.x86_64工具
客户端信息测试
rhel:192.168.1.162
系统环境:Red Hat Enterprise Linux Server release 6.5 (Santiago)内核版本:2.6.32-431.el6.x86_64
须要备份的目录:将客户端/backup中的内容备份到备份服务器的/backup中
一、数据同步rsync
二、本地打包脚本实现
三、配置定时任务
备份服务器的配置
# yum -y install rsync
rsync版本:rsync.x86_64 0:3.0.6-12.el6
配置文件
rsync的主要有如下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)
服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,请建立它。
具体步骤以下:
# touch /etc/rsyncd.conf #建立rsyncd.conf,这是rsync服务器的配置文件。
# touch /etc/rsyncd.secrets #建立rsyncd.secrets ,这是用户密码文件。
# chmod 600 /etc/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 不然没法备份成功!
# touch /etc/rsyncd.motd
编辑/etc/rsyncd.conf文件
# vim /etc/rsyncd.conf
pid file = /tmp/rsyncd.pid
port = 873
address = 192.168.1.161
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow=192.168.1.0/24
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
log format = %t %a %m %f %b
syslog facility = local3
log file = /tmp/rsync.log
transfer logging = yes
timeout = 300
[mysqldate]
path = /backup
list=no
ignore errors
auth users = root
secrets file = /etc/rsyncd.secrets
comment = zhushi
编辑/etc/ rsyncd.secrets文件
# vim rsyncd.secrets
root:fanjinbao
编辑/etc/rsyncd.motd文件
里面内容想写啥就写啥
启动rsync的服务
# /usr/bin/rsync -–daemon --config=/etc/rsyncd.conf
--daemon参数方式,是让rsync以服务器模式运行
--config用于指定rsyncd.conf的位置,若是在/etc下能够不写
客户端配置:
客户端基本不用配置,直接备份就ok啦
# rsync -azP --delete /backup root@192.168.1.161:/
常见的选项:
-a,--archive(存档) 归档模式,表示以递归的方式传输文件,而且保持文件属性,等同于加了参数-rlptgoD
-z , --compress 表示压缩传输
-P 显示传输进度
--delete 删除那些目标位置有而原始位置没有的文件
具体选项及参数说明:
rsync有六种不一样的工做模式:
一、拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工做模式。
二、使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
三、使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
四、 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
五、从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
六、列远程机的文件列表。这相似于rsync传输,不过只要在命令中省略掉本地机信息便可。
-a 以archive模式操做、复制目录、符号链接 至关于-rlptgoD
rsync中的参数
-r 是递归;
-l 是连接文件,意思是拷贝连接文件;-p 表示保持文件原有权限;
-L 复制软连接文件的原文件
-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 至关于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,本身试试。能够看文档;
-e ssh的参数创建起加密的链接。
-u只进行更新,防止本地新文件被重写,注意二者机器的时钟的同时
--progress是指显示出详细的进度状况
--delete是指若是服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
--exclude不一样步的文件
--password-file=/password/path/file来指定密码文件,这样就能够在脚本中使用而无需交互式地输入验证密码了,这里须要注意的是这份密码文件权限属性要设得只有属主可读。
4、使用ssh密钥实现无交互备份。作成脚本,将rhel上的数据,按期备份到server上。
在rhel上生成密钥对
# ssh-keygen
查看生成的公钥和私钥:
[root@rhel backup]# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
将公钥上传到server数据源
# ssh-copy-id root@192.168.1.161
或者
# scp /root/.ssh/id_rsa.pub root@192.168.1.161:/root/.ssh/authorized_keys
注:若是使用scp命令必须两台机器均可以用scp命令,不然不能使用
5、配置rsync+inotify实现实时同步
inotify概述:
Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各类变化状况,如文件存取、删除、移动等。利用这一机制,能够很是方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时做出响应。
使用rsync工具与inotify机制相结合,能够实现触发式备份(实时同步),只要原始位置的文档发生变化,则当即启动增量备份操做,不然处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。
安装inotify-tools-3.13.tar.gz
# tar zxvf inotify-tools-3.13.tar.gz
# cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify-tools
# make
# make install
设置inotify-tools的环境变量
# vim .bash_profile
加入imotify的路径/usr/local/inotify-tools/bin
# source .bash_profile
执行监控:
# inotifywait -mrq -e create,move,delete,modify /backup
报错:
error while loading shared libraries: libinotifytools.so.0
解决办法:
# ln -sv /usr/local/inotify-tools/lib/libinotify* /usr/lib/
# ln -s /usr/local/inotify-tools/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
# cp /usr/lib/libinotifytools.so.0 /usr/local/lib
而后在执行监控
# inotifywait -mrq -e create,move,delete,modify /backup
就能够了
同步脚本:
# vim backup.sh
#!/bin/bash
inotifywait -mrq -e create,move,delete,modify /backup | while read a b c
do
rsync -azP --delete /backup root@192.168.1.161:/
done
# chmod 755 backup.sh
./backup.sh &
6、利用服务方式同步数据
编辑服务端的配置文件
# vim /etc/rsyncd.conf不用怀疑就用这个命令,没有就增长
添加以下内容:
port=8730
log file=/var/log/rsync.log
pid file=/var/run/rsync.pid
[fanjinbao]
path=/backup
use chroot=true
max connection=4
read only=yes
list=yes
uid=root
gid=root
auth users=root
secrets file=/etc/rs.passwd
hosts allow=192.168.1.162
注意:修改文件后不须要重启服务
建立密码文件:
# vim /etc/rs.passwd
# chmod 400 /etc/rs.passwd
启动服务:
# rsync --daemon
去客户端测试:
# rsync -avzP --port 8730 test@192.168.1.161::test/ .
在客户端指定密码文件,无交互同步数据
# vim /etc/rsync_passwd编辑密码文件
# chmod 400 /etc/rsync_passwd设置为只读
# rsync -avzP --port 8730 --password-file=/etc/rsync_passwd test@192.168.1.161::test/ .