翁省輝,黃丹萍,廖天驕,郭喜鴻,丘淼帆
(北京理工大學(xué)珠海學(xué)院,廣東珠海519085)
基于移動(dòng)存儲(chǔ)設(shè)備的云端自動(dòng)備份系統(tǒng)設(shè)計(jì)
翁省輝,黃丹萍,廖天驕,郭喜鴻,丘淼帆
(北京理工大學(xué)珠海學(xué)院,廣東珠海519085)
為減少移動(dòng)存儲(chǔ)設(shè)備丟失帶來(lái)的不利影響及突破物理存儲(chǔ)空間的限制,利用QT框架以及FTP文件傳輸協(xié)議,設(shè)計(jì)出一種能自動(dòng)備份文件、便于用戶使用的移動(dòng)設(shè)備云端自動(dòng)備份系統(tǒng)。該備份系統(tǒng)實(shí)現(xiàn)了移動(dòng)存儲(chǔ)設(shè)備文件自動(dòng)上傳,從云端下載文件,顯示文件上傳后文件列表,一鍵還原移動(dòng)存儲(chǔ)設(shè)備的空間等功能,基本實(shí)現(xiàn)移動(dòng)存儲(chǔ)設(shè)備與云端的同步。目前云盤軟件雖然很多但并沒(méi)有專門針對(duì)U盤的,所以本系統(tǒng)具有一定的創(chuàng)新性。實(shí)際應(yīng)用表明,該系統(tǒng)具有操作簡(jiǎn)單等特點(diǎn),具有良好的市場(chǎng)前景。
移動(dòng)存儲(chǔ)設(shè)備;QT;FTP;自動(dòng)備份
隨著社會(huì)的發(fā)展和信息技術(shù)的進(jìn)步,全球信息化的趨勢(shì)越來(lái)越明顯,大量的信息需要存儲(chǔ),需要共享?;谠贫说拇鎯?chǔ)方式(即云盤)就在這種情況下變的越來(lái)越受歡迎。目前廣大的群眾用還是U盤(一種移動(dòng)存儲(chǔ)設(shè)備)這種傳統(tǒng)的存儲(chǔ)方式。一方面,U盤往往攜帶有重要資料,丟失會(huì)帶來(lái)很多困擾;另一方面,U盤有物理存儲(chǔ)空間限制,當(dāng)所存資料大小大于U盤時(shí),一個(gè)U盤往往不夠用,基于移動(dòng)存儲(chǔ)設(shè)備的云端自動(dòng)備份系統(tǒng)能夠有效解決這些問(wèn)題[1],它具有自動(dòng)備份的功能,自動(dòng)將U盤里的文件上傳至云端,另外支持一鍵還原移動(dòng)存儲(chǔ)設(shè)備的空間,可以將已備份的數(shù)據(jù)刪除,騰出U盤空間。
云端自動(dòng)備份系統(tǒng)主要由U盤,網(wǎng)盤2個(gè)模塊組成。總體框架圖如圖1所示。
該系統(tǒng)的U盤功能主要是利用U盤的插入識(shí)別,獲取移動(dòng)存儲(chǔ)設(shè)備的詳細(xì)信息,當(dāng)文件備份成功時(shí)可以選擇使用一鍵還原功能刪除所有的文件以騰出U盤空間。網(wǎng)盤功能是首先用戶輸入用戶名密碼登錄網(wǎng)盤,成功登錄后實(shí)現(xiàn)自動(dòng)上傳移動(dòng)存儲(chǔ)設(shè)備里的文件,并通過(guò)監(jiān)視函數(shù)監(jiān)視移動(dòng)存儲(chǔ)設(shè)備的文件變化來(lái)決定是否修改網(wǎng)盤的數(shù)據(jù),用戶亦可根據(jù)自己的需要下載備份網(wǎng)盤的文件。
圖1 系統(tǒng)總體框架圖
2.1插入識(shí)別
該模塊主要是檢測(cè)U盤的插入與拔出,若檢測(cè)到有U盤插入,在Windows桌面會(huì)顯示U盤信息的UI界面;若檢測(cè)到U盤已拔出,顯示U盤已拔出的UI界面。
2.2信息讀取
該模塊主要是獲取U盤的詳細(xì)信息,例如:U盤的總空間、可用空間、盤符、路徑。在系統(tǒng)檢測(cè)到有U盤插入時(shí),利用函數(shù)FirstDriveFromMask()獲取U盤的盤符和路徑,用函數(shù)GetVo1umeInformationA()得到U盤的名字,再用函數(shù)GetDiskFreeSpaceEx()獲得U盤的總空間和剩余空間。
2.3一鍵還原
該模塊主要是在用戶備份完成U盤數(shù)據(jù)后,給用戶提供一個(gè)清空U盤數(shù)據(jù)的功能,使U盤的空間可以反復(fù)使用,突破U盤物理空間的限制。下面為一鍵還原U盤的關(guān)鍵代碼:QDir dir(path)j dir.removeRecursive1y()j其中,path為U盤的路徑。
2.4用戶登錄
使用FTP傳輸文件時(shí),本機(jī)需先與FTP服務(wù)器建立連接[3_4],然后向服務(wù)器發(fā)出傳輸命令,服務(wù)器在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是當(dāng)FTP沒(méi)有開(kāi)啟匿名登錄的權(quán)限時(shí),如果用戶在某個(gè)主機(jī)上沒(méi)有注冊(cè)獲得授權(quán),即沒(méi)有用戶名和密碼,就不能與該主機(jī)進(jìn)行文件傳輸。因此,在設(shè)計(jì)該模塊的時(shí)候,本著為用戶著想的原則,為用戶自動(dòng)分配一個(gè)賬戶和密碼,用戶可自己修改賬戶和密碼。
利用text()函數(shù)分別獲取賬號(hào)、密碼輸入框中的數(shù)據(jù),用connectToHost()和1ogin()登錄到網(wǎng)盤。以下是實(shí)現(xiàn)用戶登錄的關(guān)鍵代碼:
ftp_>connectToHost(ftpServer,21)j
ftp_>1ogin(userName,passWord)j
2.5文件上傳
文件傳輸協(xié)議(Fi1e Transfer?Protoco1,?FTP)是一個(gè)可以用于跨平臺(tái)(在兩臺(tái)裝有不同操作系統(tǒng)的機(jī)器上)傳輸計(jì)算機(jī)文件的軟件標(biāo)準(zhǔn)。它屬于網(wǎng)絡(luò)協(xié)議組的應(yīng)用層。主要用于上傳和下載文件。跟其他傳輸協(xié)議相比,用FTP協(xié)議上傳文件大于1M的文件速度快;文件越大;上傳的速度倍數(shù)越大,非常適合U盤的文件上傳,因此該系統(tǒng)選用FTP協(xié)議來(lái)進(jìn)行文件的傳輸,上傳到服務(wù)器進(jìn)行保存。
為了滿足不同用戶的需求,該模塊設(shè)計(jì)成兩部分,分別是自動(dòng)上傳備份和手動(dòng)上傳備份。自動(dòng)上傳備份是當(dāng)用戶登錄網(wǎng)盤成功后,自動(dòng)調(diào)用遍歷函數(shù),遍歷U盤內(nèi)的所有文件后,上傳U盤內(nèi)的所有文件。手動(dòng)上傳備份是不上傳U盤內(nèi)的所有文件,用戶根據(jù)自己的需要,選擇上傳自己需要備份的文件。
下面的代碼是自動(dòng)上傳備份代碼中的核心部分:實(shí)現(xiàn)的功能有上傳文件,計(jì)算上傳文件總大?。?]。因?yàn)閐ir_iterator是迭代器,可根據(jù)dir_iterator.hasNext()確定是否有下一個(gè)元素可以迭代,再用dir_iterator.next()迭代到下一個(gè)元素。
2.6文件下載
依靠FTP協(xié)議的支持,用戶下載的文件沒(méi)有類型和大小限制,即用戶可已選擇任何自己想要下載的文件。當(dāng)用戶所需的文件損壞或丟失的時(shí)候,并且備份在網(wǎng)盤的時(shí)候,就可以登錄網(wǎng)盤下載自己需要的文件。
用戶成功登錄網(wǎng)盤后,獲取服務(wù)器目錄下的文件列表,當(dāng)用戶選擇項(xiàng)目為文件時(shí),點(diǎn)擊下載可以下載用戶所需要的文件。選定文件后提示用戶將文件存儲(chǔ)在何處,用戶選擇存儲(chǔ)區(qū)后開(kāi)始下載任務(wù)。
使用getSaveFi1eName()函數(shù)獲得文件名,利用get()函數(shù)下載并保存至用戶指定的路徑。當(dāng)用戶下載失敗時(shí),出錯(cuò)處理會(huì)在信息顯示面板中顯示下載出錯(cuò),當(dāng)用戶選擇項(xiàng)目為文件夾時(shí),提示用戶不能下載。以下是文件下載的關(guān)鍵代碼:
QString f=QFi1eDia1og:getSaveFi1eName(0,tr(″SaveAs″),temp)j
ftp_>get(fi1eName,fi1e)j
2.7監(jiān)視U盤
監(jiān)視U盤是為了方便用戶的使用,讓用戶在不用自己動(dòng)手的情況下,實(shí)時(shí)的更新網(wǎng)盤的備份信息[6_7]。若U盤里有文件被刪除或修改,網(wǎng)盤就會(huì)第一時(shí)間做出反應(yīng),更新網(wǎng)盤的相關(guān)備份信息。
QT提供了QFi1eSystemWatcher類來(lái)監(jiān)視文件和目錄的改變。通過(guò)遍歷函數(shù),獲取U盤里的文件的路徑,并用函數(shù)addPaths()監(jiān)視U盤里的每個(gè)文件。當(dāng)檢測(cè)到U盤里的文件被修改或刪除,系統(tǒng)調(diào)用函數(shù)directoryChange()更新網(wǎng)盤里的備份信息。
2.8文件顯示
文件顯示模塊主要是將網(wǎng)盤上的文件列表顯示出來(lái),能更方便用戶直接了解U盤的備份信息,實(shí)現(xiàn)實(shí)時(shí)更新。為了使該軟件更具實(shí)用性,該系統(tǒng)還加入了文件與文件夾的圖標(biāo),以便更好的區(qū)分兩者。
該界面的作用是是顯示服務(wù)器文件列表,利用控件QTreeWidgetItem來(lái)實(shí)現(xiàn)。在網(wǎng)盤主界面創(chuàng)建一個(gè)QTreeWidgetItem,命名為fi1eList,并置于主界面中間,該控件包括3個(gè)項(xiàng)目:文件名fi1ename,文件大小fi1esizes,修改日期fi1edates,使用類QUr1Info中的函數(shù)直接獲得這3個(gè)項(xiàng)目的值。當(dāng)用戶成功登錄網(wǎng)盤時(shí),這3個(gè)項(xiàng)目的數(shù)據(jù)自動(dòng)更新,主要功能使用addToList()函數(shù)實(shí)現(xiàn)。
item_>setText(0,QString:fromLoca18Bit(ur1Info.name(). toLatin1())j
item_>setText(1,QString:number(ur1Info.size())j
item_>setText(2,ur1Info.1astModified().toString(″yyyy/M/dd hh:mm″)j
當(dāng)?shù)卿浘W(wǎng)盤時(shí),首先清除文件列表信息,利用c1ear()函數(shù)實(shí)現(xiàn)。
以下是該系統(tǒng)用于某U盤的信息顯示和云端自動(dòng)備份的測(cè)試。在進(jìn)行測(cè)試時(shí),首先運(yùn)行該應(yīng)用軟件系統(tǒng),運(yùn)行后會(huì)在系統(tǒng)托盤化區(qū)顯示“沖上云端”的托盤化圖標(biāo)。插入U(xiǎn)盤后,系統(tǒng)檢測(cè)到U盤后,會(huì)顯示如圖2所示的界面。
圖2 U盤信息顯示界面
該界面顯示了該U盤的總空間、可用空間、以及U盤空間的使用率。通過(guò)點(diǎn)擊“網(wǎng)盤”按鈕,通過(guò)賬號(hào)和密碼成功登錄網(wǎng)盤后,自動(dòng)備份所有文件,同時(shí)進(jìn)入網(wǎng)盤的主界面,如圖3所示。
圖3 網(wǎng)盤測(cè)試主界面
它顯示文件的名稱和最新修改日期。點(diǎn)擊“上傳”按鈕,選擇U盤內(nèi)的一個(gè)文件上傳至網(wǎng)盤,上傳后文件將在界面中顯示。如果上傳不成功,將提示上傳失敗的原因。再點(diǎn)擊“下載”按鈕,選擇網(wǎng)盤上的一個(gè)文件下載到本機(jī)上的任意路徑上,如果下載失敗,會(huì)提示下載失敗的原因。通過(guò)實(shí)際應(yīng)用發(fā)現(xiàn),該系統(tǒng)測(cè)試方便快速、穩(wěn)定可靠。
本系統(tǒng)利用FTP協(xié)議自行搭建云存儲(chǔ)服務(wù)器,實(shí)現(xiàn)了移動(dòng)存儲(chǔ)設(shè)備文件的自動(dòng)備份,同時(shí)還實(shí)現(xiàn)了一鍵還原、云盤文件下載等,可以突破物理存儲(chǔ)空間的限制并能有效減少移動(dòng)存儲(chǔ)設(shè)備丟失帶來(lái)的數(shù)據(jù)損失,是對(duì)普通U盤實(shí)現(xiàn)云存儲(chǔ)的一個(gè)嘗試。實(shí)際應(yīng)用效果良好,有較好的應(yīng)用前景。
[1]湯一松.利用FTP搭建安全便捷的數(shù)據(jù)文件自動(dòng)備份系統(tǒng)[J].中國(guó)統(tǒng)計(jì),2010(6):35_36.
[2]廖洪其,凌捷,郝彥軍,等.USB移動(dòng)存儲(chǔ)設(shè)備的惟一性識(shí)別方法研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(12):2778_2780.
[3]羅彩君.基于Linux系統(tǒng)的FTP服務(wù)器的實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2013,21(11):40_42.
[4]李發(fā)海.高校實(shí)驗(yàn)教學(xué)用FTP服務(wù)器的構(gòu)建[J].信息技術(shù),2011 (8):55_57.
[5]霍亞飛.Qt Creator快速入門[M].2版.北京:北京航空航天大學(xué)出版社,2014.
[6]陸添超.本地文件監(jiān)控系統(tǒng)[J].電腦編程技巧與維護(hù),2010 (14):136_137.
[7]周相兵,馬洪江,苗放.種基于云計(jì)算的旅游云構(gòu)架模式研究[J].重慶師范大學(xué)學(xué)報(bào):自然科學(xué)版,2013(2):79_86.
[相關(guān)參考文獻(xiàn)鏈接]
可曉海,古麗江·庫(kù)爾班,常莉麗,等.基于掉電數(shù)據(jù)存儲(chǔ)的耐壓絕緣測(cè)試系統(tǒng)設(shè)計(jì)[J].2014,22(3):124_128.
周瑩,于金花,牛志華,等.基于FPGA的水聲信號(hào)采集與存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].2014,22(13):184_186
王淑娟.SaaS模式下多租戶數(shù)據(jù)比較存儲(chǔ)模式研究[J]. 2014,22(18):11_13.
徐俊,湯庸,趙云龍.冠字號(hào)云存儲(chǔ)管理系統(tǒng)設(shè)計(jì)[J]. 2014,22(19):35_37
石常興,周浩.一種基于EVC的數(shù)據(jù)存儲(chǔ)管理算法實(shí)現(xiàn)[J]. 2014,22(20):187_189
蘇秀紅,李春枝,申川.基于Nand F1ash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)[J].2014,22(23):4_7.
賀建英,唐青松.Ajax技術(shù)與路徑存儲(chǔ)法在樹(shù)形結(jié)構(gòu)中的整合研究[J].2015,23(3):8_10.
李?yuàn)?,宋琪,朱巖,等.基于抗輻照龍芯的雙接口大容量存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].2015,23(3):116_118.
Deslgn of cloud automatlc backuP system based on moblle storage deVlce
WENG Sheng_hui,HUANG Dan_ping,LIAO Tian_jiao,GUO Xi_hong,QIU Miao_fan
(School of Beijing Institute of Technology(Zhuhai),Zhuhai 519085,China)
To reduce the adverse impact of the 1oss of mobi1e storage device and break the restriction of physica1 storage space,this paper designs a automatic backup system for mobi1e devices,which can automatica11y backup fi1es and faci1itate the user to use by using the QT framework and FTP.The backup system has the fo11owing functions:automatic up1oad of mobi1e storage device fi1es,down1oad fi1e from the c1oud,show the up1oad fi1e 1ist,restore the space of mobi1e storage devices and other.It basica11y synchronized mobi1e storage devices and c1oud synchronization.A1though there are many c1oud disk software,but no specific for the U disk,so this system has some innovative.The practica1 app1ication shows that the system has the advantages of simp1e operation,and it wi11 have a good market.
mobi1e storage devicejQTj FTPjautomatic backup
TN919.5
A
1674_6236(2016)10_0077_03
2015_06_16稿件編號(hào):201506166
2014年校級(jí)大學(xué)生創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目(48)
翁省輝(1984—),男,江西撫州人,碩士,講師。研究方向:嵌入式系統(tǒng)設(shè)計(jì)。