云应用越来越普及,不过数据上传保存到云端服务器后,当我们出于需要想彻底清除云端这些数据时,却可能无法完成。因为在删除数据时,可能由于本地的数据不同步(指令没有发出),或者由于云端自身的合法原因(为了防灾,多个地方备份),或者非法的原因(有隐秘备份、不执行删除指令),我们根本无法确认是否完全删除。有没有一种“可信删除”的解决方案呢?
【解题思路】
2014年23期杂志《多管齐下 让云端删除更可信》一文中,已经提供了多种方法,以确保云端文件的数据安全。我今天补充的,则是与之相关的一个内容,就是如何确认云端的文件是否真正被删除干净?我们个人用户没有办法查明云端服务器有没有不正当的原因私自存储我们的文件,但是却可以通过网盘的秒传现象查出服务器上面是否还有我们文件的缓存(也就是多服务器没有完全删除的文件)。
【解题方法】
作为测试,首先让我们准备一个较大的并且独一无二的文件,然后将它上传到云端(图1)。之所以要选择独一无二的文件,是因为如果已有其他用户上传过测试用的文件,就会影响测试的结果。
接下来将该文件下载到本地,然后删除云端的这个文件。这时候,如果服务器在我们不知情的情况下备份了这个文件,那么当我们再次上传此文件时,就会出现很快就会上传完成的现象(图2),即所谓的“秒传”。
为什么会出现秒传现象呢?
秒传现象就是服务器为了节省空间,在上传文件之前,会先计算文件的hash(相当于一个文件的“身份证”),如果出现相同的,那么就只会重构你的云端账户的文件列表,并将待上传的文件指向已经上传的文件的地址。这样一来服务器就只需要一份文件的空间来存储这些文件。
从秒传现象的原理可知,这种现象产生的条件很苛刻,必须是服务器上存有的文件的hash与上传的文件的hash完全相同才可以。因此如果服务器中保存有你的文件,那么就会瞬间进度条走满上传完成。而如果没有你的文件,就只能一点一点重新上传你的文件。也就是说,当秒传发生时,实际就表明你的文件已经被云端备份过,并没有真正被删除。
小提示
要想实现秒传,部分网盘需要使用它们的客户端或者安装控件才能实现。所以要想测试的话,请提前安装这些客户端。
另外,本次测试的是百度云网盘,发现就算删除了网盘上的文件,一定时间内服务器上还是存有我们的文件。