自建Mac TimeMachine局域网无线备份环境

缘起

    前边的文章也写到过,有定期备份数据的习惯,换了MBP之后呢,初期使用rsync自动备份家目录数据到固定的位置(比如MBP内插的内存卡),但是后期发现越来越不给力了,原因是随着时间的推移,sd卡的空间也已经捉襟见肘了。

    此时,一个mbp的时光机备份方案进入视线,不仅能够保证在电脑出问题后无痕恢复到指定位置,还可以防止数据丢失,实在是很方便。

    然后,经过一番折腾,将移动硬盘分成几个区,一个用来备份mac,一个用来备份iPhone,另外一个作为NTFS常规分区,用来在windows机器上使用。

    上面一番折腾之后,已经可以实现备份功能,但是呢,每次回到家,都需要手动插入移动硬盘,然后插着电脑放一夜,才能完成一次备份,时间上,以及操作上是比较麻烦的。(额,懒惰的人类呀,插个usb的事情,也是感觉麻烦滴。。。。)

    那么有没有可以自动无线备份的方案呢,当然是有的啦,apple 提供了官方的无线硬盘,买一个放家里,mac连入同一个无线网络后,自动开始备份,这多好用,多么美好。。。。

    哈哈哈,然而苹果的尿性,这玩意儿是在太贵了,不是土豪搞起来肉疼。

    于是,有了这篇文章,用来查找使用什么廉价的方案来实现局域网无线备份功能


过程

1、使用智能路由器/NAS实现

    经过网上一番查找,发现诸如小米路由器之类的智能路由器是可以满足要求的(大多基于openwrt修改而来),通过安装路由器插件,可以在路由器上实现AFP协议,从而实现局域网备份的功能

    另外呢,诸如群晖之类的NAS同样可以实现类似功能

    然后上网看了下小米路由器的评论,发现有不少说这个备份功能只能在mac开机情况下使用,在关机状态(诸如recovery)下是不能使用的,同时呢,小米路由便宜的100多,而自己现在不缺路由器,因此,这种方案作为备选咯。


2、通过windows内安装linux虚拟机实现

    又经过网上一番查找,发现在linux下,是有开源的AFP协议实现的,这样就可以通过一台linux机器 + 移动硬盘的方式实现功能咯。

    同时呢,由于我的windows主机有下载的需求(诸如115的下载),因此纯linux的机器是不太合适的,因此,一个备选方案就是在windows主机上开一个精简的linux虚拟机咯,然后把移动硬盘挂载在虚拟机上就可以了。

    下面是一个教程,大家跟着做应该就可以了。

    https://mechanus.io/zai-linux-shang-da-jian-time-machine-bei-fen-fu-wu-qi/

    http://zeng.photography/blog/TimeMachine/

3、通过windows共享实现

    默认情况下,windows共享是smb协议,而windows上目前没有可用的AFP实现,因此直接开启AFP协议是不行的,我们需要曲线来做。

    所谓曲线呢,就是做一个假的硬盘给mac备份使用,这个假的硬盘呢,真身在windows服务器上,通过smb共享给mac,然后呢,在共享的硬盘被mac挂载后,我们得到了一个mac支持的硬盘类型,这时候我们再设置mac 时光机器的备份磁盘为这个挂载后的磁盘,那么一切就ok了。于时光机器,它使用了一个支持的类型的硬盘,因此可以正常工作;于我们,我们使用了一个远程smb共享来的数据,然后挂载出的硬盘,因此我们是可以无线传输的。

    下面是教程咯,参考自http://blog.spider.im/2016/08/15/time-machine-on-samba/

    

创建磁盘镜像

这里要创建的不是常见的DMG镜像,而是稀疏捆绑磁盘镜像[1],目的是稀疏捆绑磁盘镜像是随着使用占用的空间而逐渐增大,不用一下子就把空间分好了,另外后期也可以动态调整大小,另外还有个分不清的叫稀疏磁盘镜像也可以,不过我选择的是稀疏磁盘捆绑镜像[2]

有2种方式来创建稀疏捆绑磁盘镜像

1
2
cd ~
hdiutil create -size 600g -type SPARSEBUNDLE -fs "HFS+J" TimeMachine.sparsebundle

打开磁盘工具(spotlight搜下磁盘就出来了),在文件新建->新建空白映像里面新建个,需要修改映像格式为稀疏捆绑磁盘映像,大小修改下自己写个数字可以写500gb这种mac会自动识别

把磁盘镜像拷贝到网络驱动上

打开finder CMD+K smb://你的ip地址,然后把生成的镜像拷贝到你的windows共享中,并且双击下镜像文件mount下

把这个镜像设置成你的TimeMachine备份设备

开个终端

1
sudo tmutil setdestination /Volumes/TimeMachine

注意看你的volume目录是不是这个目录,可以cd到volume目录里面查看,替换成自己的

设置成开机自动连接

通过applescript的方式实现:
打开脚本编辑器(spotlight 搜applescript)

1
2
3
4
5
try
mount volume "smb://readyshare/TimeMachine"
end try

do shell script "hdiutil attach -mountpoint /Volumes/TimeMachine/ /Volumes/TimeMachine/TimeMachine.sparsebundle"

其实这里也可以不设置成开机启动,而是在固定时间启动,比如在星期天回家,mac在局域网内时启动(我们可以借助crontab定时任务实现),这样,最终的效果就是,我们在回到家后,局域网内的smb备份磁盘被加载起来,时间机器自动检测到磁盘挂载,然后开启自动备份,一切都是这么的愉快~~~~

不足之处

这种方式不能使用可以恢复到任意时刻的OSX的恢复功能,只能先重装个系统,然后mount上镜像,再恢复,当然可以把镜像拷贝到移动硬盘上,插到mac上这样应该也可以使用OSX的恢复功能

总结

    一个字,折腾

    这个备份的方案,最稳定的肯定是apple自家的无线硬盘啦,买一个放家里,基本不用管啦

    至于用linux服务器以及windows虚拟出linux的方案,有些代价和可用性问题,除非本身是linux发烧友,否则不建议使用

    至于路由器的方案,如果你刚好想要买新路由器或者对老的路由器不能忍受了,那可以考虑买个带mac备份功能的智能路由在加个移动硬盘使用,还可以做一个简单的nas来用

    至于windows下使用smb曲线救国的方案,则需要一个一直在线的windows主机,再加上一个一直在线的硬盘


    由于我本身就有一个下载机,使用smb曲线救国的方案是没问题的,如果以后没有下载需求了,我大概会转到路由器的方案吧,毕竟一个简单的nas功能也是需要的。

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。