亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于linux系統(tǒng)的文件實時備份系統(tǒng)

        2014-03-14 05:15:56劉斌
        電腦與電信 2014年6期
        關(guān)鍵詞:校驗碼校驗備份

        劉斌

        (克拉瑪依職業(yè)技術(shù)學院,新疆維吾爾自治區(qū) 克拉瑪依 838600)

        基于linux系統(tǒng)的文件實時備份系統(tǒng)

        劉斌

        (克拉瑪依職業(yè)技術(shù)學院,新疆維吾爾自治區(qū) 克拉瑪依 838600)

        本文從企業(yè)的實際需求出發(fā),總結(jié)當前備份軟件存在的一些問題,根據(jù)這些備份軟件備份過程中的關(guān)鍵技術(shù),設計出一種linux下基于inotify機制以及Rsync算法的文件備份軟件。實現(xiàn)不同類型同步事件的實時觸發(fā)和事件類型識別,以及系統(tǒng)自動完成對不同文件同步事件的相應處理。利用Rsync算法計算文件差異,減少傳輸數(shù)據(jù),減輕帶寬壓力。

        linux;inotify;rsync;文件備份

        1.引言

        目前數(shù)據(jù)安全對企業(yè)以及個人用戶越來越重要,因此容災和遠程備份技術(shù)正成為目前研究的熱點。當前l(fā)inux下較成熟的文件同步軟件rsync等提供了文件同步功能,但他們的問題也很明顯:首先,不能實時監(jiān)控文件系統(tǒng)來判斷文件的更新變化,而只能通過守護進程或者手動的方式進行指定文件的同步;其次,未能考慮到企業(yè)中的一些特別的需求,對主機兩端實時數(shù)據(jù)文件的同步?jīng)]有實現(xiàn);再次,傳統(tǒng)的軟件都是利用定點備份的方法,設置一個時間段,每隔一個時間段備份一次,數(shù)據(jù)實時性較低。

        本文提出了一種基于文件操作時間的差異備份方法,利用linux下的inotify機制對文件進行實時監(jiān)控,當用戶對所監(jiān)控文件進行修改后,捕獲文件的變化信息,轉(zhuǎn)化為程序可識別時間,對文件操作進行記錄,然后利用rsync經(jīng)典算法計算出差異數(shù)據(jù),通過網(wǎng)路進行傳輸。

        2.inotify機制介紹

        inotify的API都使用文件描述符,這樣可以將監(jiān)控粒度控制到單個文件,而dnotify機制的控制粒度則為單個目錄。使用文件描述符更大的優(yōu)勢在于對inotify的操作也可以使用read()、close()、select()等這些傳統(tǒng)的文件操作函數(shù)。

        2.1 int inotify_init(void)

        創(chuàng)建并初始化一個inotify實例,該函數(shù)返回一個文件描述符。可以認為這個函數(shù)是打開一個inotify類型的文件并返回該類型文件的描述符。

        2.2 intinotify_add_watch (int__fd,constchar *__name,uint32_t__mask)

        增加監(jiān)視文件(監(jiān)視器),fd用于指明該文件被添加于哪個inotify實例,name用于指名該文件的路徑,mask則指明了該文件所有的監(jiān)控事件。該函數(shù)調(diào)用成功后返回一個監(jiān)視器的描述符。

        2.3 int inotify_rm_watch(int__fd,int__wd)

        從fd中刪除一個監(jiān)視器,wd指名具體的監(jiān)視器。

        表1 常用的事件觸發(fā)掩碼

        3.Rsync算法介紹

        rsync是unix/linux下同步文件的一個高效算法,它能同步更新兩處計算機的文件與目錄,并適當利用查找文件中的不同塊以減少數(shù)據(jù)傳輸。rsync中一項與其他大部分類似程序或協(xié)定中所未見的重要特性是鏡像只對有變更的部分進行傳送。rsync可拷貝/顯示目錄屬性,以及拷貝文件,并可選擇性地壓縮以及遞歸拷貝。rsync利用由Andrew Tridgell發(fā)明的算法。rsync的算法如下:(假設我們同步源文件名為fileSrc,同步目的文件叫fileDst)

        (1)分塊Checksum算法。首先,我們會把fileDst的文件平均切分成若干個小塊,比如每塊512個字節(jié)(最后一塊會小于這個數(shù)),然后對每塊計算兩個checksum,一個叫rolling checksum,是弱checksum,32位的checksum,其使用的是Mark Adler發(fā)明的adler-32算法,另一個是強checksum,128位的,用md5 hash算法,checksum算法定義如下:

        a(k,l)=(∑Xi)mod M

        b(k,l)=(∑(l-i+1)Xi)mod M

        s(k,l)=a(k,l)+216b(k,l)

        上面公式中,s(k,l)表示數(shù)據(jù)塊Xk,...,Xl的滾動校驗值,為了簡化計算,M取值為216。這種校驗計算公式具有一個非常關(guān)鍵的特性,就是后續(xù)校驗值可以通過遞推關(guān)系高效地計算獲得。

        a(k+1,l+1)=(a(k,l)-Xk+Xl+1))mod M

        b(k+1,l+1)=(b(k,l)-(l-k+1)Xk+a(k+1,l+1))mod M

        s(k+1,l+1)=a(k+1,l+1)+216b(k+1,l+1)

        因此,給定X1,...,Xn的校驗值,X1以及Xn+1,我們就可以快速地計算出X2,...,Xn+1校驗值。這樣,利用這種性質(zhì)我們就可以高效地計算數(shù)據(jù)塊連續(xù)校驗值,大幅減少checksum計算量。

        (2)傳輸算法。同步目標端會把fileDst的一個checksum列表傳給同步源,這個列表里包括了三個東西,rolling checksum(32bits),md5 checksume(128bits),文件塊編號。

        (3)checksum查找算法。同步源端拿到fileDst的checksum數(shù)組后,會把這個數(shù)據(jù)存到一個hash table中,用rolling checksum做hash,以便獲得O(1)時間復雜度的查找性能。這個hash table是16bits的,所以,hash table的尺寸是2的16次方,對rolling checksum的hash會被散列到0到2^16-1中的某個整數(shù)值。

        (4)比對算法。這是最關(guān)鍵的算法,細節(jié)如下:

        a.取fileSrc的第一個文件塊(我們假設的是512個長度),也就是從fileSrc的第1個字節(jié)到第512個字節(jié),取出來后進行rolling checksum計算。計算好的值再到hash表中進行查找。

        b.如果查到了,說明發(fā)現(xiàn)在fileDst中有潛在相同的文件塊,于是就再比較md5的checksum,因為rolling checksume太弱了,可能發(fā)生碰撞。于是還要算md5的128bits的checksum,這樣一來,我們就有2^-(32+128)=2^-160的概率發(fā)生碰撞,這個值太小了可以忽略。如果rolling checksum和md5 checksum都相同,這說明在fileDst中有相同的塊,我們需要記下這一塊在fileDst下的文件編號。

        c.如果fileSrc的rolling checksum沒有在hash table中找到,那就不用算md5 checksum了。表示這一塊中有不同的信息??傊?,只要rolling checksum或md5 checksum其中有一個在fileDst的checksum hash表中找不到匹配項,那么就會觸發(fā)算法對fileSrc的rolling動作。于是,算法會住后step 1個字節(jié),取fileSrc中字節(jié)2-513的文件塊要做checksum,go to(a).

        4.系統(tǒng)框架圖

        本系統(tǒng)的服務端運行在linux系統(tǒng)下,隨系統(tǒng)啟動。主要功能模塊包括inotify監(jiān)控模塊,控制模塊,文件數(shù)據(jù)處理模塊,網(wǎng)絡通信模塊,日志記錄模塊和異常處理模塊。

        控制模塊:監(jiān)控管理備份系統(tǒng)的各個模塊,協(xié)調(diào)各個模塊的運行。并統(tǒng)一管理備份系統(tǒng)中的日志信息和異常信息。

        靜態(tài)文件數(shù)據(jù)備份模塊:靜態(tài)文件數(shù)據(jù)備份模塊主要完成對文件的完全備份。

        實時文件數(shù)據(jù)備份模塊:實現(xiàn)文件的差異備份,采用經(jīng)典的Rsync算法計算出更新文件的差量數(shù)據(jù),并通過網(wǎng)絡傳輸模塊完成對數(shù)據(jù)的傳輸。

        圖1 服務端結(jié)構(gòu)和功能模塊設計

        網(wǎng)絡傳輸模塊:主要任務是完成服務器端與客戶端的鏈接,并且完成對數(shù)據(jù)的傳輸。

        日志記錄模塊:以特定的格式記錄每個模塊中的狀態(tài)信息,在備份任務創(chuàng)建和完成以及由于某種原因中斷時,記錄下狀態(tài)信息。

        異常處理模塊:負責對備份系統(tǒng)異常信息的處理方法。

        5.靜態(tài)文件備份模塊流程圖

        靜態(tài)文件備份流程詳細描述:

        (1)程序開始接受客戶端數(shù)據(jù);

        (2)分析接受到的客戶端數(shù)據(jù)對進行備份初始化;

        (3)分析接受到的客戶端數(shù)據(jù),取得客戶端發(fā)送來的需要備份的路徑列表記錄;

        (4)在路徑記錄列表中讀取到一條記錄以后獲取路徑信息,并且將路徑信息返回給客戶端;

        (5)若路徑為文件路徑,則按行讀取文件的內(nèi)容,將其送往發(fā)送緩沖區(qū),之后數(shù)據(jù)通過網(wǎng)絡發(fā)往客戶端,遇到EOF后返回;

        (6)判斷源列表記錄是否還有記錄,若有則返回步驟4,若無則將結(jié)束標志發(fā)往客戶端,結(jié)束數(shù)據(jù)傳輸;

        (7)若路徑為目錄,則遞歸的讀取此目錄下的所有文件,將文件數(shù)據(jù)發(fā)往數(shù)據(jù)緩沖區(qū),通過網(wǎng)絡將數(shù)據(jù)發(fā)往客戶端,若目錄中沒有未處理文件或者目錄,則返回6。

        靜態(tài)文件的備份主要是在客戶端設置備份的周期,若備份周期為一周,則在第一次備份完一周以后再執(zhí)行一次靜態(tài)文件的備份。

        圖2 靜態(tài)文件備份模塊流程圖

        6.實時文件備份模塊

        6.1 實時監(jiān)控模塊流程圖(如圖3)

        6.2 實時文件備份模塊中文件數(shù)據(jù)處理流程圖(如圖4)

        實時文件備份模塊中文件數(shù)據(jù)處理詳細流程:

        (1)等待文件更新變化的發(fā)生,從事件隊列中讀取事件,判斷事件的類型;

        (2)有新建的文件或者有復制過來的文件,則對文件內(nèi)容劃分數(shù)據(jù)塊,放入緩沖區(qū),并進行數(shù)據(jù)傳輸;

        (3)讀取更新文件,按照RSYNC算法計算兩種校驗碼,并與校驗碼附加文件中的校驗碼進行對比后計算出差量數(shù)據(jù),構(gòu)建好完整的數(shù)據(jù)包后放入緩沖區(qū),通過網(wǎng)絡傳輸?shù)娇蛻舳??;赗SYNC算法的文件內(nèi)容更新步驟如下:

        a.在服務器端,當為指定的文件進行監(jiān)控初始化時,建立一個校驗碼附加文件,將原始文件filesrc平均分成大小為b字節(jié)的若干個小塊Bi,針對每個數(shù)據(jù)塊bi,計算出兩個校驗碼ri和mi,即滾動校驗碼和MD5哈希函數(shù),在實際的對比過程中,滾動校驗碼用來區(qū)別不同,而MD5哈希函數(shù)是用來確認相同。將這兩個校驗碼和文件相關(guān)信息存儲為附加校驗碼文件checksum.txt。

        b.在有更新事件發(fā)生后,讀取舊文件的checksum.txt文件中的校驗列表,并為該校驗列表建立哈希表,針對校驗碼序列,遍歷新文件,按照同樣的方式對新文件進行分塊,從第一塊開始,先計算出滾動校驗碼,在哈希表中查找,若有匹配,且之后計算出的MD5校驗碼也匹配,則將索引號組織為更新包放到緩沖區(qū),然后后移一塊,對比下一塊;如果在哈希表中找不到相應的滾動校驗碼或者找到滾動校驗碼之后對應的MD5碼不匹配,則表示這一塊中有不同的信息,后移一個字節(jié)后分塊,再計算滾動校驗碼,重復這樣的過程直到比較完整個文件。

        c.通過網(wǎng)絡傳輸數(shù)據(jù)更新包。

        d.在客戶端,通過服務器傳輸過來的更新同步數(shù)據(jù)包和舊文件來構(gòu)建新文件。

        圖3 實時監(jiān)控模塊流程圖

        圖4 實時文件備份模塊中文件數(shù)據(jù)處理流程圖

        7.系統(tǒng)實現(xiàn)

        本系統(tǒng)服務器端采用Cent OS6.2系統(tǒng),功能實現(xiàn)主要采用c語言和shell腳本來完成,分別實現(xiàn)了靜態(tài)文件備份和實時文件備份。為了簡化用戶操作步驟,縮短用戶熟練使用軟件的周期,客戶端采用MS windows server2003系統(tǒng),用c語言集合面向?qū)ο笳Z言c++完成了人機交互界面和相應代碼程序??蛻舳撕头掌鞑捎胹oket方式連接。

        8.結(jié)語

        本文介紹了一種新的linux下遠程文件同步模型——基于Rsunc算法的遠程文件同步系統(tǒng)。該遠程文件同步系統(tǒng)提高了系統(tǒng)運行效率和提供較高的可擴展性,彌補了當前l(fā)inux下遠程同步軟件所存在的特殊要求不可達、帶寬占用多等問題。

        [1]彭勇,劉曉潔,鄧洪敏.《基于差異的遠程文件備份與恢復方法》[J].四川大學學報,2009.

        [2]李波,朱坤.《基于局域網(wǎng)的數(shù)據(jù)庫文件備份》[J].農(nóng)業(yè)網(wǎng)絡信息, 2007,(10).

        [3]李夷苒,李濤,胡曉勤,馬曉旭.《基于事件的文件備份方法研究與實現(xiàn)》[J].計算機工程與設計,2010,(21).

        [4]林國慶,王靜,陳汝偉.《基于索引的文件備份方案》[J].電子設計工程,19(19).

        Real-Time Backup System Based on Linux System

        Liu Bin
        (Karamay Vocational&Technical College,Karamay 838600,Xinjiang)

        Starting from the actual needs of enterprises,this paper summarizes the problem and the key technologies of software backup,and designs the file backup software based on the inotify mechanisms and Rsync algorithm in linux.It implements the realtime synchronization events trigger of different types and event type recognition,as well as the automatic synchronization events procession of different file.Rsync algorithm is used to calculate the file differences,to reduce the transmitting data size and the pressure of the bandwidth.

        linux;inotify;rsync;file backup

        劉斌,男,甘肅酒泉人,碩士,研究方向:嵌入式系統(tǒng)。

        猜你喜歡
        校驗碼校驗備份
        “備份”25年:鄧清明圓夢
        爐溫均勻性校驗在鑄鍛企業(yè)的應用
        基于Excel實現(xiàn)書號校驗碼的驗證
        基于FPGA的循環(huán)冗余校驗碼設計
        電子世界(2015年14期)2015-11-07 05:32:29
        身份證號碼中的數(shù)學
        淺析數(shù)據(jù)的備份策略
        科技視界(2015年6期)2015-08-15 00:54:11
        大型電動機高阻抗差動保護穩(wěn)定校驗研究
        電測與儀表(2015年1期)2015-04-09 12:03:02
        基于加窗插值FFT的PMU校驗方法
        鍋爐安全閥在線校驗不確定度評定
        出版原圖數(shù)據(jù)庫遷移與備份恢復
        久久99国产亚洲高清| 国产91精品丝袜美腿在线| 亚洲成在人网站天堂日本| 国产婷婷色一区二区三区深爱网| 日韩女优av一区二区| 少妇被粗大的猛烈进出免费视频| 极品熟妇大蝴蝶20p| 亚洲AV色欲色欲WWW| 美女免费观看一区二区三区| 精品人妻av区乱码| 亚洲碰碰人人av熟女天堂| 91极品尤物国产在线播放| 国产91精品一区二区麻豆亚洲| 中国无码人妻丰满熟妇啪啪软件| 国产精品永久免费视频| 亚洲无码图| 国产黄色一区二区在线看| 先锋中文字幕在线资源| 精品丝袜人妻久久久久久| 国产一区二区三区av免费观看| 日韩人妻精品视频一区二区三区| 亚洲一区二区三区av无码| 在线免费观看国产精品| 国产精品成人久久一区二区| 国产午夜亚洲精品国产成人av | 女人被男人躁得好爽免费视频| 国产AV无码一区精品天堂| 综合中文字幕亚洲一区二区三区| 国产免费又色又爽粗视频| 日本又黄又爽gif动态图| 99热这里只有精品久久6| 久久亚洲中文字幕精品二区| 精品免费久久久久久久| 欧美日韩国产一区二区三区地区| 国产精品久久婷婷六月| 天天做天天爱夜夜爽毛片毛片| 亚洲av无码一区二区二三区| 色婷婷丁香综合激情| 亚洲国产精品中文字幕久久| 国产农村妇女毛片精品久久| 亚洲欧美日韩精品中文乱码|