翁省辉,黄丹萍,廖天骄,郭喜鸿,丘淼帆
(北京理工大学珠海学院,广东珠海519085)
基于移动存储设备的云端自动备份系统设计
翁省辉,黄丹萍,廖天骄,郭喜鸿,丘淼帆
(北京理工大学珠海学院,广东珠海519085)
为减少移动存储设备丢失带来的不利影响及突破物理存储空间的限制,利用QT框架以及FTP文件传输协议,设计出一种能自动备份文件、便于用户使用的移动设备云端自动备份系统。该备份系统实现了移动存储设备文件自动上传,从云端下载文件,显示文件上传后文件列表,一键还原移动存储设备的空间等功能,基本实现移动存储设备与云端的同步。目前云盘软件虽然很多但并没有专门针对U盘的,所以本系统具有一定的创新性。实际应用表明,该系统具有操作简单等特点,具有良好的市场前景。
移动存储设备;QT;FTP;自动备份
随着社会的发展和信息技术的进步,全球信息化的趋势越来越明显,大量的信息需要存储,需要共享。基于云端的存储方式(即云盘)就在这种情况下变的越来越受欢迎。目前广大的群众用还是U盘(一种移动存储设备)这种传统的存储方式。一方面,U盘往往携带有重要资料,丢失会带来很多困扰;另一方面,U盘有物理存储空间限制,当所存资料大小大于U盘时,一个U盘往往不够用,基于移动存储设备的云端自动备份系统能够有效解决这些问题[1],它具有自动备份的功能,自动将U盘里的文件上传至云端,另外支持一键还原移动存储设备的空间,可以将已备份的数据删除,腾出U盘空间。
云端自动备份系统主要由U盘,网盘2个模块组成。总体框架图如图1所示。
该系统的U盘功能主要是利用U盘的插入识别,获取移动存储设备的详细信息,当文件备份成功时可以选择使用一键还原功能删除所有的文件以腾出U盘空间。网盘功能是首先用户输入用户名密码登录网盘,成功登录后实现自动上传移动存储设备里的文件,并通过监视函数监视移动存储设备的文件变化来决定是否修改网盘的数据,用户亦可根据自己的需要下载备份网盘的文件。
图1 系统总体框架图
2.1插入识别
该模块主要是检测U盘的插入与拔出,若检测到有U盘插入,在Windows桌面会显示U盘信息的UI界面;若检测到U盘已拔出,显示U盘已拔出的UI界面。
2.2信息读取
该模块主要是获取U盘的详细信息,例如:U盘的总空间、可用空间、盘符、路径。在系统检测到有U盘插入时,利用函数FirstDriveFromMask()获取U盘的盘符和路径,用函数GetVo1umeInformationA()得到U盘的名字,再用函数GetDiskFreeSpaceEx()获得U盘的总空间和剩余空间。
2.3一键还原
该模块主要是在用户备份完成U盘数据后,给用户提供一个清空U盘数据的功能,使U盘的空间可以反复使用,突破U盘物理空间的限制。下面为一键还原U盘的关键代码:QDir dir(path)j dir.removeRecursive1y()j其中,path为U盘的路径。
2.4用户登录
使用FTP传输文件时,本机需先与FTP服务器建立连接[3_4],然后向服务器发出传输命令,服务器在收到命令后就给予响应,并执行正确的命令。但是当FTP没有开启匿名登录的权限时,如果用户在某个主机上没有注册获得授权,即没有用户名和密码,就不能与该主机进行文件传输。因此,在设计该模块的时候,本着为用户着想的原则,为用户自动分配一个账户和密码,用户可自己修改账户和密码。
利用text()函数分别获取账号、密码输入框中的数据,用connectToHost()和1ogin()登录到网盘。以下是实现用户登录的关键代码:
ftp_>connectToHost(ftpServer,21)j
ftp_>1ogin(userName,passWord)j
2.5文件上传
文件传输协议(Fi1e Transfer?Protoco1,?FTP)是一个可以用于跨平台(在两台装有不同操作系统的机器上)传输计算机文件的软件标准。它属于网络协议组的应用层。主要用于上传和下载文件。跟其他传输协议相比,用FTP协议上传文件大于1M的文件速度快;文件越大;上传的速度倍数越大,非常适合U盘的文件上传,因此该系统选用FTP协议来进行文件的传输,上传到服务器进行保存。
为了满足不同用户的需求,该模块设计成两部分,分别是自动上传备份和手动上传备份。自动上传备份是当用户登录网盘成功后,自动调用遍历函数,遍历U盘内的所有文件后,上传U盘内的所有文件。手动上传备份是不上传U盘内的所有文件,用户根据自己的需要,选择上传自己需要备份的文件。
下面的代码是自动上传备份代码中的核心部分:实现的功能有上传文件,计算上传文件总大小[5]。因为dir_iterator是迭代器,可根据dir_iterator.hasNext()确定是否有下一个元素可以迭代,再用dir_iterator.next()迭代到下一个元素。
2.6文件下载
依靠FTP协议的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下载的文件。当用户所需的文件损坏或丢失的时候,并且备份在网盘的时候,就可以登录网盘下载自己需要的文件。
用户成功登录网盘后,获取服务器目录下的文件列表,当用户选择项目为文件时,点击下载可以下载用户所需要的文件。选定文件后提示用户将文件存储在何处,用户选择存储区后开始下载任务。
使用getSaveFi1eName()函数获得文件名,利用get()函数下载并保存至用户指定的路径。当用户下载失败时,出错处理会在信息显示面板中显示下载出错,当用户选择项目为文件夹时,提示用户不能下载。以下是文件下载的关键代码:
QString f=QFi1eDia1og:getSaveFi1eName(0,tr(″SaveAs″),temp)j
ftp_>get(fi1eName,fi1e)j
2.7监视U盘
监视U盘是为了方便用户的使用,让用户在不用自己动手的情况下,实时的更新网盘的备份信息[6_7]。若U盘里有文件被删除或修改,网盘就会第一时间做出反应,更新网盘的相关备份信息。
QT提供了QFi1eSystemWatcher类来监视文件和目录的改变。通过遍历函数,获取U盘里的文件的路径,并用函数addPaths()监视U盘里的每个文件。当检测到U盘里的文件被修改或删除,系统调用函数directoryChange()更新网盘里的备份信息。
2.8文件显示
文件显示模块主要是将网盘上的文件列表显示出来,能更方便用户直接了解U盘的备份信息,实现实时更新。为了使该软件更具实用性,该系统还加入了文件与文件夹的图标,以便更好的区分两者。
该界面的作用是是显示服务器文件列表,利用控件QTreeWidgetItem来实现。在网盘主界面创建一个QTreeWidgetItem,命名为fi1eList,并置于主界面中间,该控件包括3个项目:文件名fi1ename,文件大小fi1esizes,修改日期fi1edates,使用类QUr1Info中的函数直接获得这3个项目的值。当用户成功登录网盘时,这3个项目的数据自动更新,主要功能使用addToList()函数实现。
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
当登录网盘时,首先清除文件列表信息,利用c1ear()函数实现。
以下是该系统用于某U盘的信息显示和云端自动备份的测试。在进行测试时,首先运行该应用软件系统,运行后会在系统托盘化区显示“冲上云端”的托盘化图标。插入U盘后,系统检测到U盘后,会显示如图2所示的界面。
图2 U盘信息显示界面
该界面显示了该U盘的总空间、可用空间、以及U盘空间的使用率。通过点击“网盘”按钮,通过账号和密码成功登录网盘后,自动备份所有文件,同时进入网盘的主界面,如图3所示。
图3 网盘测试主界面
它显示文件的名称和最新修改日期。点击“上传”按钮,选择U盘内的一个文件上传至网盘,上传后文件将在界面中显示。如果上传不成功,将提示上传失败的原因。再点击“下载”按钮,选择网盘上的一个文件下载到本机上的任意路径上,如果下载失败,会提示下载失败的原因。通过实际应用发现,该系统测试方便快速、稳定可靠。
本系统利用FTP协议自行搭建云存储服务器,实现了移动存储设备文件的自动备份,同时还实现了一键还原、云盘文件下载等,可以突破物理存储空间的限制并能有效减少移动存储设备丢失带来的数据损失,是对普通U盘实现云存储的一个尝试。实际应用效果良好,有较好的应用前景。
[1]汤一松.利用FTP搭建安全便捷的数据文件自动备份系统[J].中国统计,2010(6):35_36.
[2]廖洪其,凌捷,郝彦军,等.USB移动存储设备的惟一性识别方法研究[J].计算机工程与设计,2010,31(12):2778_2780.
[3]罗彩君.基于Linux系统的FTP服务器的实现[J].电子设计工程,2013,21(11):40_42.
[4]李发海.高校实验教学用FTP服务器的构建[J].信息技术,2011 (8):55_57.
[5]霍亚飞.Qt Creator快速入门[M].2版.北京:北京航空航天大学出版社,2014.
[6]陆添超.本地文件监控系统[J].电脑编程技巧与维护,2010 (14):136_137.
[7]周相兵,马洪江,苗放.种基于云计算的旅游云构架模式研究[J].重庆师范大学学报:自然科学版,2013(2):79_86.
[相关参考文献链接]
可晓海,古丽江·库尔班,常莉丽,等.基于掉电数据存储的耐压绝缘测试系统设计[J].2014,22(3):124_128.
周莹,于金花,牛志华,等.基于FPGA的水声信号采集与存储系统设计[J].2014,22(13):184_186
王淑娟.SaaS模式下多租户数据比较存储模式研究[J]. 2014,22(18):11_13.
徐俊,汤庸,赵云龙.冠字号云存储管理系统设计[J]. 2014,22(19):35_37
石常兴,周浩.一种基于EVC的数据存储管理算法实现[J]. 2014,22(20):187_189
苏秀红,李春枝,申川.基于Nand F1ash的高速存储器结构设计[J].2014,22(23):4_7.
贺建英,唐青松.Ajax技术与路径存储法在树形结构中的整合研究[J].2015,23(3):8_10.
李姗,宋琪,朱岩,等.基于抗辐照龙芯的双接口大容量存储系统设计[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稿件编号:201506166
2014年校级大学生创新训练计划项目(48)
翁省辉(1984—),男,江西抚州人,硕士,讲师。研究方向:嵌入式系统设计。