1、rsync介紹
rsync是類unix系統(tǒng)下的數(shù)據(jù)備份工具。其首先通過對數(shù)據(jù)文件進(jìn)行塊劃分(通常512字節(jié)為一個數(shù)據(jù)塊),然后計算每一個數(shù)據(jù)塊的校驗碼(有兩個校驗碼:一強(qiáng)一弱,弱校驗碼用來證明不同,強(qiáng)校驗碼用來證明相同),遠(yuǎn)程主機(jī)記錄每次同步后各數(shù)據(jù)塊的校驗碼,在下次同步時進(jìn)行校驗碼的比較,依此來實現(xiàn)真正的增量備份。rsync的增量同步算法原理可參考下面這篇博客,里邊有很詳細(xì)的介紹。
rsync算法原理和工作流程分析 - 駿馬金龍 - 博客園?www.cnblogs.com/f-ck-need-u/p/7226781.html?編輯
rsync有多種工作模式:
1)借用ssh推送或拉取文件(和scp的用法差不多),示例如下:
# 將本機(jī)/opt/test/目錄下的所有內(nèi)容同步至遠(yuǎn)程主機(jī)的/opt/test/目錄下,但是rsync只支持向下創(chuàng)建一層目錄
# 如果/opt/目錄存在,則會在遠(yuǎn)程主機(jī)向下創(chuàng)建test目錄,如果/opt/目錄不存在,則會直接報錯
rsync -av /opt/test/ root@192.168.10.1:/opt/test/
2)作為客戶端,拉取遠(yuǎn)程rsync服務(wù)test模塊監(jiān)控目錄下的文件到本機(jī)的/opt/backup/test目錄下,實例如下:
/usr/bin/rsync --port=8100 -avz --delete --password-file=/opt/rsync.pass iparking@192.168.10.1::test /opt/backup/test/
3)作為服務(wù)端(服務(wù)的搭建見下文),接收遠(yuǎn)程主機(jī)推送其/opt/source/test目錄下的文件至test模塊監(jiān)控的目錄下,實例如下:
/usr/bin/rsync -avz --delete /opt/source/test/ --port=8100 iparking@192.168.10.1::test --password-file=/opt/rsync.pass
2、sersync介紹
sersync是借用inotify對文件系統(tǒng)的操作監(jiān)控和rsync工具,實現(xiàn)文件的遠(yuǎn)程實時同步。
先簡單介紹一下inotify,它是一個Linux的內(nèi)核特性,通過inode實現(xiàn)對文件系統(tǒng)的監(jiān)控,常見的事件監(jiān)聽類型有:
- access:讀取文件或目錄內(nèi)容
- modify:修改文件或目錄內(nèi)容
- attrib:文件或目錄的屬性改變
- close_write:修改真實文件內(nèi)容
- close_nowrite:文件或目錄關(guān)閉,在只讀模式打開之后關(guān)閉的
- close:文件或目錄關(guān)閉,不管讀或是寫模式
- open:文件或目錄被打開
- moved_to:文件或目錄移動到
- moved_from:文件或目錄從移動
- move:移動文件或目錄移動到監(jiān)視目錄
- create:在監(jiān)視目錄下創(chuàng)建文件或目錄
- delete:刪除監(jiān)視目錄下的文件或目錄
- delete_self:文件或目錄被刪除,目錄本身被刪除
檢驗Linux內(nèi)核是否支持inotify,通過以下命令:
grep CONFIG_INOTIFY_USER /boot/config-xxx
# 如果返回【CONFIG_INOTIFY_USER=y】,則代表支持inotify
sersync就是通過inotify機(jī)制實現(xiàn)對指定目錄的實時監(jiān)控,然后借用rsync客戶端推送文件到指定的rsync服務(wù)端,實現(xiàn)文件的自動同步。
安裝包下載地址:https://code.google.com/archive/p/sersync/downloads
3、實踐操作
假設(shè)有A(192.168.10.1)、B(192.168.10.2)兩臺主機(jī),A作為源文件存儲主機(jī),B作為備份主機(jī)。需要在B主機(jī)啟動一個rsync服務(wù),在A主機(jī)配置sersync。下面開始配置(均用root):
主機(jī)B配置(備份目錄為/opt/backup_data,rsync服務(wù)根目錄為/opt/rsync):
# 0、進(jìn)入服務(wù)根目錄,沒有就創(chuàng)建
cd /opt/rsync
# 1、將用戶名和密碼寫入密碼文件,該文件權(quán)限必須是600
echo abc:123456 > rsyncd.secrets
chmod 600 rsyncd.secrets
# 2、完善配置文件(可參考/etc/rsyncd.conf)
cat >rsyncd.conf<<EOF
#數(shù)據(jù)傳輸所使用的用戶,普通用戶啟動時不用指定
uid = root
#數(shù)據(jù)傳輸所使用的用戶組,普通用戶啟動時不用指定
gid = root
#若為yes,需要用root權(quán)限進(jìn)行chroot設(shè)置,將根映射到path參數(shù)路徑下
use chroot = no
#并發(fā)連接數(shù)
max connections = 4
#進(jìn)程號保存文件
pid file = /opt/rsync/rsyncd.pid
#日志文件
log file = /opt/rsync/rsyncd.log
#監(jiān)聽端口
port = 8100
#IP地址
address = 192.168.10.2
#是否允許客戶端上傳數(shù)據(jù),yes表示不允許
read only = no
#允許連接服務(wù)器的賬戶,即密碼文件中的用戶
auth users = abc
#密碼驗證文件,僅在設(shè)置auth users后有效
secrets file = /opt/rsync/rsyncd.secrets
#允許同步主機(jī)列表
hosts allow = 192.168.10.1
#拒絕列表
hosts deny = *
[test]
# test模塊所監(jiān)控的目錄
path = /opt/backup_data
EOF
# 3、啟動服務(wù),可以查看8100端口是否啟用判斷服務(wù)是否啟動成功
/usr/bin/rsync --daemon --config=/opt/rsync/rsyncd.conf
主機(jī)A配置(待同步目錄為/opt/source_data,sersync服務(wù)根目錄為/opt/sersync):
# 0、進(jìn)入根目錄,沒有則創(chuàng)建
cd /opt/sersync
# 1、將至前下載的安裝包解壓至該目錄(安裝包中兩個文件:sersync2和confxml.xml)
# 2、創(chuàng)建B主機(jī)rsync服務(wù)的密碼文件,權(quán)限同樣必須是600
echo 123456 > rsync.pass
chmod 600 rsync.pass
# 3、修改配置文件confxml.xml,替換<sersync>標(biāo)記內(nèi)的內(nèi)容如下
<sersync>
<!--指定本地待同步目錄及遠(yuǎn)程rsync服務(wù)地址及模塊名-->
<localpath watch="/opt/source_data">
<remote ip="192.168.10.2" name="test"/>
</localpath>
<rsync>
<commonParams params="-artuz"/>
<!--指定密碼文件及端口號-->
<auth start="true" users="abc" passwordfile="/opt/sersync/rsync.pass"/>
<userDefinedPort start="true" port="8100"/>
<timeout start="false" time="100"/>
<ssh start="false"/>
</rsync>
<!--同步失敗后,日志存放文件,每60分鐘重試一次-->
<failLog path="/opt/sersync/rsync_fail_log.sh" timeToExecute="60"/>
<crontab start="false" schedule="600">
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
# 4、啟動服務(wù)
/opt/sersync/sersync2 -r -d -o /opt/sersync/confxml.xml
至此,就可以實現(xiàn)當(dāng)A主機(jī)/opt/source_data目錄下的文件發(fā)生變化時,實時將變化同步至B主機(jī)的/opt/backup_data目錄下。文章來源:http://www.zghlxwxcb.cn/news/detail-804869.html
同樣,也可以在A主機(jī)搭建rsync服務(wù),在B主機(jī)啟動sersync,實現(xiàn)A、B主機(jī)的雙向?qū)崟r同步。文章來源地址http://www.zghlxwxcb.cn/news/detail-804869.html
到了這里,關(guān)于sersync+rsync實現(xiàn)文件自動同步的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!