centos文件实时同步inotify+rsync

个人应用场景是重要文件备份shell

端口:873,备份端打开便可vim

下载地址:https://rsync.samba.org/ftp/rsync/src/bash

服务端和客户端要保持版本一致服务器

网盘连接:https://pan.baidu.com/s/1wTsj0cCfXRcREnbzeIviuQssh

备份端

一、安装rsync:测试

...网站

 

二、设置密码文件ui

vim /etc/rsync.pas

cjh:123456  #格式 用户名:密码   这里的用户名和密码跟系统没有关系的

 

配置文件spa

vi /etc/rsyncd.conf  #文件不必定有,能够本身建立


# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

 

加上个人配置code

uid =root #root是必须的,同步时权限问题
gid =root 
use chroot = yes
max connections = 1
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
timeout = 300
[test]
read only =no #必须是no
path = /root/      #同步目录路径,要注意同步过来的时候模块名会拼接,好比/root/test/ 这里就只须要填/root/
comment = xxx       #可选,无太大做用
auth users =cjh        #用户名,注意跟系统的用户密码不要紧
secrets file =/etc/rsync.pas #密码文件
hosts allow = ip1,ip2  #源文件端ip

 

启动

which rsync
/xx/rsync

#后台启动
/xx/rsync --daemon

ps -ef | grep rsync #看看服务是否正常运行

 

源文件端

一、安装启动rsync+inotify

注意密码文件格式跟备份端不同,好比这里直接写123456就能够了,不须要用户名

特别介绍一下就是:rsync有六种不一样的工做模式

1、rsync [OPTION]... SRC DEST
2、rsync [OPTION]... SRC [USER@]HOST:DEST
3、rsync [OPTION]... [USER@]HOST:SRC DEST
4、rsync [OPTION]... [USER@]HOST::SRC DEST
5、rsync [OPTION]... SRC [USER@]HOST::DEST
6、rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

1)拷贝本地文件。(没用过,不知道效果怎样)

2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。(若是没有作免密登陆,每次都要输密码)

3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。(若是没有作免密登陆,每次都要输密码)

4)从远程rsync服务器中拷贝文件到本地机。(按期备份能够用这个)

5)从本地机器拷贝文件到远程rsync服务器中。(实时备份用这个)

6)列远程机的文件列表。(没用过)

 

二、一次性同步测试

rsync -av /root/test/ cjh@备份端IP::test --password-file=/etc/rsync.pas --bwlimit=100

 

test是客户端定义的模块,/root/test2 是客户端的目录,密码文件跟服务端不一样的是只须要填密码,--bwlimit是网速的限制,--delete是彻底同步目录文件

 

实时同步

 安装inotify-tools,下载的网站打不开,我就直接用yum方式安装

yum install -y inotify-tools

实时同步脚本(attrib指文件的属性,好比只读)

#!/bin/bash
host1=IP  #备份服务器IP
src=/root/test/  #同步目录最好保持一致
dst1=test   #模块名称
user1=cjh   #用户名
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e create,modify,attrib $src \
| while read files
do
        rsync -av $src $user1@$host1::$dst1 --password-file=/etc/rsync.pas --bwlimit=100
        echo "${files} was rsynced."
done

 

启动脚本

nohup sh run.sh  > run.out & 2>&1 &

 

测试经过

 

注意点:

一、chmod 600 /etc/rsync.pas,两端都须要作这个操做

二、大文件的同步是很慢的,同步的时候卡住注意是否是文件太大了

三、上线前认真作好测试和普通方式的备份,以及尽可能不要使用--delete,防止数据丢失

四、/etc/rsyncd.conf配置文件中一个注释都不能写,上面只是为了方便表达参数含义!

五、当文件数量超多的时候,同步会有一点延迟,大概是几分钟

 

 转载请注明博客出处:http://www.cnblogs.com/cjh-notes/

相关文章
相关标签/搜索