Linux學習筆記:Sersync

1.    什麼是Sersync

        Sersync是基於inotify實現實時文件備份。與inotify相比,sersync可以比較方便地精確到具體哪個文件或文件夾。

2.    安裝sersync的前提

        sersync是使用基於inotify的,儘管可以不安裝inotify-tools,但還是需要linux內核支持,需要至少2.6.13或以上。

        確定內核版本是否符合需求

        [root@Lab1 ~]# uname -r

        2.6.32-431.el6.x86_64

        [root@sv01 ~]# uname -r

        2.6.32-279.el6.i686

        可以看出,兩臺機器的均是2.6.32版本內核,滿足了前提條件,而最後面接的是架構,前者x86_64代表64位系統,後者i686代表32位系統

3.    安裝sersync

        sersync並不能yum安裝,只能透過網上下載,可以到它官方網站下載32位和64位的程序

        https://code.google.com/archive/p/sersync/downloads

        https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

        

        32位版本只有2.5版,應該是作者停止開發了,而64位版也很久沒更新了,停留在2.5.4有一年時間了。

        這裏以64位爲例,建議用瀏覽器下載後上傳到服務器上

        [root@Lab1 src]# cd /usr/local/src

        [root@Lab1 src]# rz -be

        rz waiting to receive.

        zmodem trl+C 

        100%     710 KB  710 KB/s 00:00:01       0 Errors  ary_stable_final.tar.gz...

        [root@Lab1 src]# tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz   #解壓得到GNU-Linux-x86文件夾

        [root@Lab1 src]# mv GNU-Linux-x86 /usr/local/sersync  #把該文件夾挪到/usr/local下並改名爲sersync

        [root@Lab1 src]# cd /usr/local/sersync/

        [root@Lab1 sersync]# ls    #可以看到sersync的結構非常簡單,只有一個配置文件confxml.xml和執行文件sersync2

        confxml.xml  sersync2

4.    配置sersync

        配置文件就是confxml.xml,裏面已經有一些演示的內容供參考,這需要修改一下即可

        <host hostip="localhost" port="8008"></host>

        #可以把hostip改成本地ip地址,port是源端口,這兩個參數一定要有,否則會啓動失敗。

        

        <debug start="false"/>

        #是否開啓排錯模式,如果開啓,則會輸出很多有用的信息以便排錯

        <fileSystem xfs="false"/>

        #文件系統是否xfs格式


        <filter start="false">

            <exclude expression="(.*)\.svn"></exclude>

            <exclude expression="(.*)\.gz"></exclude>

            <exclude expression="^info/*"></exclude>

            <exclude expression="^static/*"></exclude>

        </filter>

        #過濾選項,首先是否需要開啓,其次是定義過濾規則,支持擴展正則表達式

        <inotify>

            <delete start="true"/>

            <createFolder start="true"/>

            <createFile start="false"/>

            <closeWrite start="true"/>

            <moveFrom start="true"/>

            <moveTo start="true"/>

            <attrib start="false"/>

            <modify start="false"/>

        </inotify>

        #定義inotify的觸發事件。

        <sersync>

            <localpath watch="/opt/tongbu">

                <remote ip="127.0.0.1" name="tongbu1"/>

            </localpath>

            #要監視的本地文件夾,並設定遠端備份服務器的ip地址和rsync daemon的模塊名稱

            <rsync>

                <commonParams params="-artuz"/>

                #執行rsync時的參數,默認是artuz,a相當於 -rlptgoD (no -H,-A,-X),r是遞歸,t保留修改時間,u是目標文件更新則略過,z是壓縮。我會再加上b,用於備份一份舊文件,會以~結尾。

                <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>

                #是否開啓認證,並指定用戶名和密碼文件。

                <userDefinedPort start="false" port="874"/><!-- port=874 -->

                <timeout start="false" time="100"/><!-- timeout=100 -->

                #是否開啓超時,如是,超時時間爲100秒

                <ssh start="false"/>

                #是否開啓ssh

            </rsync>

            <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

            失敗日誌文件,每60分鐘重新執行一次。

            <crontab start="false" schedule="600"><!--600mins-->

            是否開啓計劃任務,每60分鐘一次

                <crontabfilter start="false">

                是否開啓計劃任務的過濾

                    <exclude expression="*.php"></exclude>

                    <exclude expression="info/*"></exclude>

                </crontabfilter>

            </crontab>

            <plugin start="false" name="command"/>

        </sersync>

        #

5.    運行

        /usr/local/sersync/sersync2 -o /usr/local/sersync/confxml.xml

        就是這麼簡單,如果開啓了debug模式,則會輸出很多信息。

6.    一些過濾規則

    <exclude expression="(.*)/~\$.*"></exclude>  #排除以~$開頭的文件,常見於office文件

    <exclude expression="(.*)~"></exclude>        #排除以~結尾的文件,一般rsync的舊文件備份

    <exclude expression="(.*)\.tmp"></exclude>    #排除.tmp文件

    <exclude expression="(.*)\.TMP"></exclude>    #大小寫

    <exclude expression="(.*)\.mp4"></exclude>    #排除mp4文件

    <exclude expression="(.*)\.MP4"></exclude>    #大小寫

    <exclude expression=".*Thumbs\.db"></exclude>    #排除Thumbs.db文件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章