今天恰逢美国大选,特朗普已经成为新任美国总统。所以我也来凑个热闹,当然今天我不打算谈论总统的事,今天我要继续谈论我们的学校上网系列之从网盘秒传想到的
鉴于360云盘宣布关门大吉,估计大家伙都转移到百度网盘了吧。提到网盘,大家可能会把他当做备份数据的、存储资料的一个地方。所以今天我也就来科普下一些和数据备份相关的概念以及如何安全、可靠的进行数据备份。嗷对了,自从百度云改版之后,下载什么东西都得用那丫的百度云管家。婶不能忍啊!
再继续之前,强烈建议阅读爱范儿上的一篇文章:《国内的网盘一个个倒下,这里有一份能让你用到老的存储指南》
在说数据备份之前,我们要先学习一些基础知识:数据备份的三种方式、如何选择存储媒介、超大空间和秒传,之后我们会讨论下如何安全的使用云盘、如何干他丫的百度云管家。
数据备份的三种方式
通常来说,最常见的数据备份方式有完整备份、增量备份、差异备份。
完整备份
把所有文件、文件夹或数据作一次性的复制,不考虑其中是否有任何更改、变化的备份方式就叫做完整备份。通常来说,第一次备份都会是完整备份。举个例子,我周一把整个分区/目录的文件都以某种方式备份/封装到某个特定的存储介质中,这就叫做完整备份。
增量备份
指对上一次完整备份或增量备份后更新的数据进行备份。举个例子,我周一进行了完整备份,周二进行增量备份则是这段时间内发生变化的数据作为一个"增量"和周一的备份文件放在一起,这个过程就叫做增量备份。周三继续进行增量备份是和周二进行对比,变化的数据进行备份。换句话说,增量备份是跟前一次备份对比,备份变化的。
差异备份
提供运行完整备份后变更的文件的备份。差异备份和增量备份非常相近。只不过差异备份永远是和完整备份的那次进行比较(在这里也就是周一的完整备份)
估计大家伙此时还是懵逼的状态,依旧没搞懂增量和差异的区别……我们举个很大的例子:
周一进行完整备份,周二进行增量备份,周三进行增量备份,周四进行差异备份,周五进行差异备份,他们备份之后的文件名分别为file1, file2, file3, file4, file5
那么请继续往下看。
三种备份方式的还原
完整备份
最简单了,直接还原file1即可。
增量备份
假如我要恢复到周二的状态,那么需要file1和file2这两个文件,假如需要恢复到周三的状态,那么就需要file1, file2, file3这三个文件。
差异备份
假如需要恢复到周四的状态,那么就需要file1, file4;假如需要恢复到周五的状态,那么就需要file1和file5(并不需要file4)
看出增量备份和差异备份的区别了吗?
增量备份是针对上一次备份的(无论是增量还是完整),它的恢复需要每一次的增量文件和最开始的完整备份,也就是说恢复到周三的状态不能没有file2这个文件;
差异备份是针对完整备份的,它的恢复需要本次差异备份文件和对应的完整备份。假如我想恢复到周四,那么只需要file1和file4就够了,file2和file3都是完全无关的。
这有什么用?和网盘有何关系?
当然有用了,尤其是那些喜欢备份系统分区的人们——每次都是完整备份,浪费时间、浪费空间。
著名的备份软件True Image即提供这三种备份方式。
对于使用网盘的人们来说……网盘如果能够支持类似增量备份这种技术,将会大幅度减少上传时间。实际上,网盘中存在的这种技术一般被称作"差异同步",对这个技术做的最好的应该是Dropbox。举个例子,假如你上传了一个压缩包,之后又给压缩包进行了一些修改(增加、修改、删除文件等),Dropbox会分析这个压缩包中哪里被修改了,然后只上传修改过的那些字节。这一技术有一点像rsync 。因为这技术太先进了,所以很少有网盘会用,维基百科上有个页面,有兴趣可以去查阅这里
如何选择备份媒介
备份媒介,指的是你是把备份文件复制到移动硬盘上,U盘上还是上传到虚无缥缈的"云"上?
我们要从几个方面来考虑这个问题。
速度
毫无疑问,拷贝到移动硬盘上的速度是要远远快于上传到云端的,况且中国奉行下载很快、上传很慢的不对等"百兆光纤"这个现象要更加明显。下载也基本同理。
保密性
你的数据是否是保密的呢?。如果移动硬盘被借走、偷走,那么所有数据就会被人偷窥;而上传到网盘…也可能有类似的担忧:网盘提供商偷窥(比如说美国的NSA啦,中国的金盾啦)、传输过程中被窃听(很多网盘上传下载都不是加密的)、网盘账号被盗(网盘被入侵、被搜索引擎检索)
在这里点名批评百度网盘,用它,那就先给你的隐私买个保险吧。
可用性
硬盘坏了、着火、被盗、地震,使用移动硬盘这类的可能就要遭殃了。但是除非发生极大规模的全国性灾难、云存储厂商跑路、内容被审查,云端资料大概还是比较安全的……
易用性
假如你想分享某个视频给朋友,U盘拷贝进去再给他可能很麻烦;但是上传到网盘再分享就很简单了。
超大空间和秒传的秘密
对于大多数人来说,2T的空间是一种诱惑啊。但是天真的你难道以为百度真的为你量身订造买了三块价值300元的1硬盘总计900元和其他电费、带宽费来为你服务吗?还有哎百度说的2T是2048G——1024进制,而不是硬盘厂商们喜欢的900G
当然不会了!
RAID5啊亲,这么重要的应用场合,肯定要用到磁盘阵列的,而且RAID5应用比较广泛,速度和安全并存。
事实当然不是这样了。笨理想,同样的文件服务器上肯定只有一份(逻辑上只有一份),但是从技术上他们是怎么确定同一个文件的呢?这就引入了单向散列函数的概念。
单向散列函数
英文名字是hash,原意为砸碎,这倒是很形象,也有人音译为"哈希"。单向散列函数是一种将无穷无尽的东西转换为有限长度的、尽可能不重复的、不可逆字符串的算法,这个算法叫做单向散列函数,这个字符串叫做散列值、摘要、信息摘要。说到这,有些童鞋可能会问,你把无穷的东西转换成有穷的东西,肯定会有两个东西转换之后会是相同的嘛!问得好!这种现象叫做碰撞,分为……!
说到这可能"散列"这个概念还是很难理解。那么指纹可以理解吗?你对一首歌求某个散列算法的散列值,就相当于把这首歌的指纹求出来了——就像你的指纹可以几乎唯一的代表你一样,这个散列值也可以几乎唯一的代表那首歌。
举个例子,你把00000000散列之后的摘要是abjhda62c,你把仅仅改变了一个bit的10000000散列之后,摘要就会变为fjgha267d2。输入值只变了一位,但是摘要却变得面目全非。也就是说,散列可以用来验证文件的正确性、
聪明的童鞋大概想到了…假如我上传了某部电影,此时服务器上海没有这个文件,于是只好乖乖的上传了。上传完之后,另一个用户再上传同一部电影的时候(或者是散列值相同的文件),服务器(或者是客户端)经过计算发现散列值相同,那也就直接给另一个用户做标记并提示"秒传"。
这也就是秒传的原理。
单向散列函数有哪些基本特征呢?
单向性
你能把砸碎的镜子复原吗?很难吧。单向散列函数的单向性是指的操作方向的不可逆性,在单向散列函数中是指只能从输入推导出输出,而不能从输出计算出输入。
唯一性
散列函数的输入和输出不是唯一对应关系的(无穷怎么可能会一一对应有穷),如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为"哈希碰撞"。碰撞分为两种,强碰撞和弱碰撞。
弱抗碰撞性:当给定某条消息的散列值时,单向散列函数必须确保要找到和该条消息具有相同散列值的另外一条消息是非常困难的。
强抗碰撞性:是指要找到散列值相同的两条不同的消息是非常困难的。
这里的碰撞可能说的有点多了……但是百度云使用的是MD5,而MD5早就被认为是不安全的散列函数了。我曾见过用工作站碰撞小黄片玩的孩子...
如何安全的使用云盘
几个月之前,几个字幕组的成员因为上传日剧资源被日本警方逮捕
虽说字幕组本身就是游走在法律边缘的,但是我还是想说一句,字幕组挺辛苦的。那么,假如你是上面新闻里被抓的字幕组成员,假如你的网盘受到监控、传输被监听,假如给你一次重来的机会,你该怎样避免被抓到呢……?
再假如你不是很放心云存储厂商,你怕他们泄露隐私,但是你又不得不使用,那该怎么办呢?
使用VeraCrypt创建加密卷,并将加密卷上传
创建加密卷,哪怕拿到它,没有密码也是无法解密的。在轻度危险的情况下,大概也不会有人揍你胁迫你交出密码。至于加密卷的密码,可以使用某些支持端到端加密的IM软件、或者是GPG发邮件等方法告知接收人。
对于那些不信任云存储厂商但又没办法的人,创建加密卷可能是非常棒的办法了——同时这时候支持差分同步就要好太多太多了。
使用VeraCrypt创建加密卷具体方法,可以参考我的博文《2016版:密码学科普,兼谈GnuPG和VeraCrypt》
使用GPG创建加密文件
这个本质和上面是一样的,只不过非对称往往速度不占优势
使用WinRar、7zip等开启文件名加密功能
一定要记得开启文件名加密功能,否则,哎嘿嘿还是能看到文件名的。
注意:不要对加密卷再次使用WinRar等工具进行压缩
为啥捏?学习一点点信息论、密码学的人大概会懂,加密过的东西的熵都是很高的,是压不动的,还浪费你CPU,非得想弄成压缩包,或者是纯粹利用压缩软件的分卷压缩功能,请记得选"只存储"这个选项。
总结
最近心情比较浮躁,这篇文章也写得比较草率,一度都觉得想放弃了。近几天我也会尽快更新“美文推荐”的。最后,留下一句话:
有些人总觉得,我踢球进门了,是我球技好;射偏了,那是打雷吓到了我。其实真正起决定性作用的是球技,打不打雷下不下雨只是次要因素。
读写速度多少比较合算?
CF卡现在看上去好像已经过气了……感觉CF卡不容易掰断……不过 microSD 是不是比较脆?也许不怎么拿出来比较好。
(看着别人用树莓派,自己在整积灰TP-Link?)