rsync双机实时相互备份
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
rsync双机实时备份
remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的、数据在内存缓存区完成之后还没有写入到磁盘中去、所以有时候要同步到磁盘中去的,而rsync说白了跟复制差不多、能将一个文件从一个地方复制到另外一个地方的、但是他也可以实现跨主机复制,兼具了cp和scp的功能,但是在跨主机时不具备scp的加密功能。
rsync有个特点,就是当你用rsync复制或跨主机复制时如果另一端也有一个同名的文件,他会先比较这两个文件的特征码是不是一致,如果不一致就会复制,并覆盖,如果一致他将不会复制,所以说这是一个快速复制工具,尤其是同步目录时,特别好用。
rsync命令的工作模式有四种:1、shell模式,也称为本地模式,速度要比cp快2、远程shell模式,其可以借助于ssh协议承载其数据传输过程3、列表模式,其工作方式与ls相似,仅列出源的内容:-nv 4、服务器模式,此时,rsync可以工作为守护进程,能够接收客户端的数据传输请求,在使用时可以在客户端使用rsync命令发送给守护进程,也可以向服务器主获取文件。
rsync命令的选项:-n:如果担心命令执行不正确,一同步复制,可能这个复制的后果是致命的,那后果可就严重了,这里我们可以加-n先测试一下-v: --verbose,详细输出模式、显示详细过程的-q: --quiet,静默模式,尽可能输出少的信息-c: --checksum,可以对传输的文件进行较验的,强制对文件传输进行校验-r: --recursive,递归复制-a: --archives,归档,复制时可以保存原有的属主属主等属性信息,甚至包括一点额外的属性、如访问控制列表-p: --perms,保存文件的权限-t: --times,保留文件的时间戳-l: --links,保留文件的符号链接-g: --group,保留文件的属组-o: --owner,保留文件的属主-D: --devices,保留设备文件-e SSH:远程复制时,表示使用ssh协议作承载-z:基于网络时使用,对文件压缩后传输--progress:显示压缩进度条的--stats:显示如何执行压缩和传输的,也就是显示传输状态的注意:rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录内容,而不复制目录本身;没有斜线,则会复制目录本身,因此有如下命令:# rsync -r /mydata/data /backups/:会把目录data直接同步至/backups目录中去# rsync -r /mydata/data/ /backups/:会把目录中的data/中的内容同步至/backups目录中rsync本地用法:# cd /etc /tmp/ # rsync /tmp/etc/passwd /tmp/test/passwd -nv推送到远程主机上去,把本地的etc 文件推送到172.16.251.244主机上去:#rsync-r-essh/tmp/**************.251.244:/tmp/拉取远程服务器上的文件:#*************************.251.244:/etc/pam.d./--stats把文件推送到服务器端上去:#*******************************.27.1::my_data_rsync如果我们从服务器上拉取文件时必须要指定文件路径#rsync *************.27.1::my_data_rsync/messages/tmp/
Inotify
Inotify 是一个Linux特性,是一种强大的、细粒度的、异步的文件系统事件监控机制,linux 内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
Inotify 反应灵敏,用法非常简单,并且比cron 任务的繁忙轮询高效得多。
=====================rsync+inotify 实现实时同步过程====================
测试服务器选用最小话安装,所以需要yum 安装一些必要程序:
yum -y install gcc gcc-c++ autoconf nss_ldap libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers pcre pcre-devel make wget vim cmake gd gd-devel libevent libevent-devel zip unzip
软件需要从网上下载,所以需要安装wget:
yum install wget
下载所需软件:
wget /ftp/rsync/rsync-3.1.0.tar.gz
wget /downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
安装软件
tar -zxvf rsync-3.1.0.tar.gz
cd rsync-3.1.0
./configure --prefix=/usr/local/rsync
make && make install
Test1 192.168.100.230 Test2 192.168.100.231
tar -zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify
make && make install
mkdir /etc/rsyncd -p
cd /etc/rsyncd/
touch rsyncd.conf
touch rsyncd.secrets #这2个文件一个是test1连test2时使用touch rsyncd.secrets1 #一个是test2连test1时使用
touch rsyncd.motd #此文件内显示欢迎信息
chown root.root rsyncd.secrets #修改属主
chmod 600 rsyncd.secrets #修改权限
chown root.root rsyncd.secrets1#修改属主
chmod 600 rsyncd.secrets1 #修改权限
touch /root/shall/rsync.sh
192.168.100.230配置
vi /etc/rsyncd/rsyncd.conf
pid file= /var/run/rsyncd.pid
port = 873
address = 192.168.100.230 #rsync服务器地址,填本机地址
#uid = nobody
#gid = nobody
uid = root
gid = root
use chroot = no
readonly = no
#limit access to private LANs
hosts allow=192.168.100.0/255.255.255.0
hosts deny=*
max connections = 50
motd file= /etc/rsyncd/rsyncd.motd
#This will give you a separate log file
log file= /var/log/rsync.log
#transfer logging = yes
log format= %t %a %m %f %b
syslog facility = local3
timeout = 300
[htdocs] #定义模块
path = /test #指定要同步的文件夹路径
list=yes #
ignore errors
auth users= root
secrets file= /etc/rsyncd/rsyncd.secrets
#comment = rsync htdocs
vi /etc/rsyncd/rsyncd.secrets
root:
vi /etc/rsyncd/rsyncd.secrets1
vi /etc/rsyncd/rsyncd.motd
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use rsync services!
2014------2024
++++++++++++++++++++++++++++++++++++++++++++++
/usr/local/rsync/bin/rsync --daemon -config=/etc/rsyncd/rsyncd.conf #启动rsync
echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf" >> /etc/rc.local
vi /root/shall/rsync.sh
#!/bin/bash
host=192.168.100.231 #这里的IP和rsyncd.conf里的IP不一样,这里填远程地址src=/test/
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src| while read files
do
/usr/bin/rsync -vzrtopg --delete --password-file=/etc/rsyncd/rsyncd.secrets1 $src
root@$host::htdocs> /dev/nult
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
done
chmod u+x /root/shall/rsync.sh
cp /usr/local/rsync/bin/rsync /usr/bin/
setsid /root/shall/rsync.sh &
echo "/root/shall/rsync.sh" >> /etc/rc.local
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
192.168.100.231配置与230配置基本一样,下面列出不一样的地方:
vi /etc/rsyncd/rsyncd.secrets
vi /etc/rsyncd/rsyncd.secrets1
root:
vi /etc/rsyncd/rsyncd.conf
address = 192.168.100.231
secrets file= /etc/rsyncd/rsyncd.secrets1
vi /root/shall/rsync.sh
host=192.168.100.230
/usr/bin/rsync -vzrtopg --delete --password-file=/etc/rsyncd/rsyncd.secrets $src root@$host::htdocs> /dev/nult。