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/

相關文章
相關標籤/搜索