背景
硬盘越来越大,胆子却越来越小,一个小小的事实中枪者不在少数。稍有些计算机龄的朋友,估计都被病毒、系统重装、硬盘损坏、误删…等等等等搞丢过数据,可能是你加班N天码的文章、抠的代码,难得机会出游的珍贵照片,多年心血收藏的女朋友…咳咳…总之,我们需要备份的数据越来越多了。
当然大容量存储现在已经不是问题,顶多多花几块钱添块硬盘,但一般来说,我们的备份却只停留在简单的冗余、打包这样的手段,比如备份到移动硬盘、刻录光盘…操作繁琐不说,整理、恢复异常麻烦,万一备份设备某天罢工,估计我们又要研究怎样备份备份设备了…
好了,到此停止抓狂…我们需要把问题理一下:
- 要备份的数据很多
- 数据的形式很多
- 硬盘很大,但传输速度是个问题
- 备份的数据也会丢
OK,一目了然,我们实际上是想要一个能够自动备份的“私有存储云”
多方案介绍
目前“私有存储云”的方案很多,特性各异,下面是可以应用在家用级数据的对比表:
类型 |
主流工具 |
适合数据 |
局限性 |
灵活度 |
折腾系数 |
成本 |
专有系统 | Apple Time MachineWindows系统还原及分区备份 | 全部 | 仅适用苹果 | 低 | 低 | 高 |
SCM工具 | Git、SVNsparkleshare | 文档、程序代码 | 工具学习曲线高,数据兼容性差(无法直接读取) | 中 | 中 | 低 |
脚本同步 | rsync | 全部 | 需要驾驭命令行 | 高 | 高 | 低 |
公有云 | dropboxgoogle drive | 少量数据 | 需要联网,容量有限 | 中 | 低 | 高 |
私有云 | owncloud | 全部 | 兼容性稍差,只支持单节点 | 中 | 中 | 中 |
大家可以根据自己的需要,选择自己合适的方式。
专有系统
Apple Time Machine
Apple Time Machine能够对mac系统进行全盘轮动式备份,可以选择本地磁盘和TimeCapsule作为备份点,并且能够让你制定的文件回到备份中存在的任何一点。
既然是专有系统,Apple Time Machine的使用就不用再做赘述,苹果官方的说明书有详细介绍。
官方传送门:http://www.apple.com.cn/support/timemachine/
Windows系统还原及分区备份
我想,Windows系统还原及分区备份更加不需要我多做赘述,虽然它有时候并不起作用。
工具同步
SCM
SCM天生就是为增量追溯源码及文档等轻型数据而诞生的,所以备份这类数据,这是一个不错的方案。当然,驾驭这些工具,你需要懂一些版本管理的知识。
目前,相对主流的SCM应该还是Git和SVN为代表的两个阵营,前者支持分布式的节点备份,后者则是主从模式。笔者更多的是使用前者,因为主从模式又不经意的将鸡蛋放在了一个篮子里。
注意SCM的备份模式一般是主动的,即人为commit数据,所以,对于一些自动同步的需求,可以使用计划任务(crontab、CI)等工具,自动commit及update,当然,这可能会额外增加备份数据的体积。
使用git进行数据备份可以参阅:大宝库的“玩转git,让git成为个人工作备份利器” http://www.cnblogs.com/dabaopku/archive/2012/01/09/2316772.html
SCM衍生工具
那基于现在功能强大的SCM工具,广大geek又创造了各种SCM衍生工具,比如SparkleShare。
SparkleShare是一个类似于Dropbox的同步工具,与后者不同的是它允许您使用自建服务器(或者是其他可用的服务器)。SparkleShare需要配合GIT使用。
详情传送门: http://article.yeeyan.org/view/129288/138825
脚本同步
rsync
说到rsync,首先要感谢它的初始作者Andrew Tridgell 和Paul Mackerras。每个做过运维、开发的同行都不陌生,这一程序员必备利器,google一下,几乎能够找到你想要的所有资料。
rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像对每个目标只需要一次传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。【维基百科】http://zh.wikipedia.org/wiki/Rsync
笔者私有网络目前的大部分数据同步,均使用了rsync,配合crontab等,比如照片的凌晨自动同步脚本:
rsync -avz /Users/xxx/Pictures/数码照片/ master@my-server1:/media/safe1/photo/
把该脚本保存为文件并赋予执行权限之后,加入到源数据节点crontab计划任务:
30 2 * * * /Users/xxx/Cloud/script/photo.sync >>/Users/xxx/Cloud/log/photo.sync.log 2>&1
那么,每当凌晨2点30分,位于源数据节点的 /Users/xxx/Pictures/数码照片 目录会自动与远程my-server1的指定目录同步。
从my-server1节点到其他节点的同步也是一样的。
Windows下使用同步脚本
看到这里,貌似大家没有看到windows系统,确实,笔者只有一台电脑是windows系统,所以需要处理的数据并不多,但并不表示不能使用自动同步脚本。
windows下使用脚本自动同步,可以用cwRsync和cygwin + rsync模式,前者是一个单独的同步脚本程序,而后者则是原生Unix命令在windows下的移植。
笔者使用了后者。
相关资料可参考:
“Cwrsync使用篇—如何实现Linux与windows下的文件同步”
http://www.huweishen.net/gongju/1624.html
“用cygwin-ssh-rsync同步windows与linux文件”
http://blog.csdn.net/twh0516/article/details/5287768
云同步
公有云
说起公有云,大家估计是又爱又恨,爱的是这东西太方便了,东西往里一扔,高枕无忧;而恨的却也异常分明,容量小、网速慢、XXW的过路费、还可能会带来XX门的隐私问题,另外,一旦服务宕机,只能干瞪眼。
所以,笔者的策略是,好的东西不能白扔,但要有选择多方案使用。比如,笔者同时使用了dropbox和google drive,并用rsync保持两者数据的同步,只备份常用文档、重要素材和常用工具这些变更频率很高的数据。
当然,由于绝大部分公有云存储都有自己的hash库,所以临时作为下载工具和U盘也是一个不错的方案,配合dropbox的局域网同步,从一台主机下载的东西直接拖进同步目录,另一台主机自动出现。
另外,公有云一般会带有自营特色的功能,比如google drive的在线文档,也会让随手使用我们自己的数据提供支持。
私有云
说到私有云系统,google一搜已尽是口水,很多铺天盖地,我只研究过有限的几个,最后还是感觉owncloud相对符合大家的需要。
ownCloud是一个自由且开源的个人云存储解决方案。最早由KDE开发者Frank Karlitschek于2010年一月创建,目标是成为商业云服务提供商的替代。【维基百科】http://zh.wikipedia.org/wiki/OwnCloud
最新的ownCloud加入了联系人、书签等常用的功能,如果你只使用单节点搭建私有云,那么这是一个快捷廉价的方案。
官网:http://owncloud.org/support/install/
DEMO:http://demo.owncloud.org/
参考及传送门
- Apple Time Machine官方:http://www.apple.com.cn/support/timemachine/
- 大宝库的“玩转git,让git成为个人工作备份利器”http://www.cnblogs.com/dabaopku/archive/2012/01/09/2316772.html
- SparkleShare的基本使用:http://article.yeeyan.org/view/129288/138825
- 维基百科.rsync:http://zh.wikipedia.org/wiki/Rsync
- Cwrsync使用篇—如何实现Linux与windows下的文件同步:http://www.huweishen.net/gongju/1624.html
- 用cygwin-ssh-rsync同步windows与linux文件:http://blog.csdn.net/twh0516/article/details/5287768
- 维基百科. OwnCloud:http://zh.wikipedia.org/wiki/OwnCloud
- OwnCloud官网:http://owncloud.org/support/install/
- OwnCloud DEMO:http://demo.owncloud.org/