999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于linux系統的文件實時備份系統

2014-03-14 05:15:56劉斌
電腦與電信 2014年6期
關鍵詞:系統

劉斌

(克拉瑪依職業技術學院,新疆維吾爾自治區 克拉瑪依 838600)

基于linux系統的文件實時備份系統

劉斌

(克拉瑪依職業技術學院,新疆維吾爾自治區 克拉瑪依 838600)

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

linux;inotify;rsync;文件備份

1.引言

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

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

2.inotify機制介紹

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

2.1 int inotify_init(void)

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

2.2 intinotify_add_watch (int__fd,constchar *__name,uint32_t__mask)

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

2.3 int inotify_rm_watch(int__fd,int__wd)

從fd中刪除一個監視器,wd指名具體的監視器。

表1 常用的事件觸發掩碼

3.Rsync算法介紹

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

(1)分塊Checksum算法。首先,我們會把fileDst的文件平均切分成若干個小塊,比如每塊512個字節(最后一塊會小于這個數),然后對每塊計算兩個checksum,一個叫rolling checksum,是弱checksum,32位的checksum,其使用的是Mark Adler發明的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)表示數據塊Xk,...,Xl的滾動校驗值,為了簡化計算,M取值為216。這種校驗計算公式具有一個非常關鍵的特性,就是后續校驗值可以通過遞推關系高效地計算獲得。

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校驗值。這樣,利用這種性質我們就可以高效地計算數據塊連續校驗值,大幅減少checksum計算量。

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

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

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

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

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

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

4.系統框架圖

本系統的服務端運行在linux系統下,隨系統啟動。主要功能模塊包括inotify監控模塊,控制模塊,文件數據處理模塊,網絡通信模塊,日志記錄模塊和異常處理模塊。

控制模塊:監控管理備份系統的各個模塊,協調各個模塊的運行。并統一管理備份系統中的日志信息和異常信息。

靜態文件數據備份模塊:靜態文件數據備份模塊主要完成對文件的完全備份。

實時文件數據備份模塊:實現文件的差異備份,采用經典的Rsync算法計算出更新文件的差量數據,并通過網絡傳輸模塊完成對數據的傳輸。

圖1 服務端結構和功能模塊設計

網絡傳輸模塊:主要任務是完成服務器端與客戶端的鏈接,并且完成對數據的傳輸。

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

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

5.靜態文件備份模塊流程圖

靜態文件備份流程詳細描述:

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

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

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

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

(5)若路徑為文件路徑,則按行讀取文件的內容,將其送往發送緩沖區,之后數據通過網絡發往客戶端,遇到EOF后返回;

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

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

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

圖2 靜態文件備份模塊流程圖

6.實時文件備份模塊

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

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

實時文件備份模塊中文件數據處理詳細流程:

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

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

(3)讀取更新文件,按照RSYNC算法計算兩種校驗碼,并與校驗碼附加文件中的校驗碼進行對比后計算出差量數據,構建好完整的數據包后放入緩沖區,通過網絡傳輸到客戶端。基于RSYNC算法的文件內容更新步驟如下:

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

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

c.通過網絡傳輸數據更新包。

d.在客戶端,通過服務器傳輸過來的更新同步數據包和舊文件來構建新文件。

圖3 實時監控模塊流程圖

圖4 實時文件備份模塊中文件數據處理流程圖

7.系統實現

本系統服務器端采用Cent OS6.2系統,功能實現主要采用c語言和shell腳本來完成,分別實現了靜態文件備份和實時文件備份。為了簡化用戶操作步驟,縮短用戶熟練使用軟件的周期,客戶端采用MS windows server2003系統,用c語言集合面向對象語言c++完成了人機交互界面和相應代碼程序。客戶端和服務器采用soket方式連接。

8.結語

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

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

[2]李波,朱坤.《基于局域網的數據庫文件備份》[J].農業網絡信息, 2007,(10).

[3]李夷苒,李濤,胡曉勤,馬曉旭.《基于事件的文件備份方法研究與實現》[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

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

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: A级毛片无码久久精品免费| 99青青青精品视频在线| 国产成人一二三| 91蝌蚪视频在线观看| 天堂成人在线| 日本一本在线视频| 亚洲精品手机在线| 五月婷婷亚洲综合| 色欲色欲久久综合网| 精品一区二区三区自慰喷水| 精品国产自在在线在线观看| 最新加勒比隔壁人妻| 免费无码AV片在线观看国产| a欧美在线| 1024国产在线| 91原创视频在线| 中文字幕有乳无码| 午夜色综合| 国产JIZzJIzz视频全部免费| 极品国产一区二区三区| www.亚洲一区| 国产精品一区二区无码免费看片| 午夜精品福利影院| 国产va在线| a免费毛片在线播放| 萌白酱国产一区二区| 久久国产拍爱| 日本成人一区| 亚洲男人在线天堂| 91久久国产热精品免费| 亚洲国产综合精品中文第一| 91视频首页| 欧美中文一区| 啪啪免费视频一区二区| 欧美日韩北条麻妃一区二区| 日韩成人免费网站| 国产成人无码综合亚洲日韩不卡| 欧美一级专区免费大片| 国产丝袜一区二区三区视频免下载| 国产日韩精品一区在线不卡| 午夜影院a级片| 国产成人无码久久久久毛片| 日韩大片免费观看视频播放| 中文字幕av无码不卡免费| 免费A级毛片无码无遮挡| 国内毛片视频| 日本一区二区三区精品国产| 国产成人av大片在线播放| 亚洲精品在线影院| 欧美性猛交一区二区三区| 国产呦精品一区二区三区下载| 国产精品欧美亚洲韩国日本不卡| 人妻熟妇日韩AV在线播放| 毛片基地美国正在播放亚洲| 伊在人亚洲香蕉精品播放| 国产免费怡红院视频| 国产香蕉国产精品偷在线观看| 欧美激情,国产精品| 日本成人精品视频| 国产网站免费| 黄色网在线| 国产v精品成人免费视频71pao| 91精品久久久久久无码人妻| 国产乱视频网站| 91网站国产| 国产精品视频第一专区| 欧洲高清无码在线| 毛片最新网址| 毛片久久久| 国产成熟女人性满足视频| 色综合天天综合中文网| 精品黑人一区二区三区| 国产h视频在线观看视频| 国产精品深爱在线| 午夜色综合| 国产99视频精品免费视频7| 久久久久无码精品| 青青操国产视频| 国产视频欧美| 国产精品爆乳99久久| 日本中文字幕久久网站| 国产福利一区在线|