自建基于 Linux 的 Time Capsule 服务

标签: linux time capsule | 发表时间:2011-02-10 11:46 | 作者:明城 Class4
出处:http://www.gracecode.com/

更改历史

  • 2011-02-14 更改 netatalk 部分配置参数
  • 2011-02-10 初始化版本

前言

Apple 的 Time Machine 提供了非常完备的数据备份方案,但每次使用外接磁盘备份很 麻烦也很容易忘记备份。同时,个人对于 Time Capsule “高昂的”售价(虽然它的确值那些钱)颇有微词。

其实,大部分管理员已经有数台 Linux 服务器,所以考虑能否安装类似 Time Capsule 的服务让 Linux 为 Mac 提供网络备份。

如果您和我一样有类似的需求,那么这篇文章可能就是你想要的 :^D

安装软件包

本人使用的 Linux 发行版为 Debian,其他发行版的也应该类似。

首先,安装需要的软件包:

% sudo apt-get install netatalk
% sudo apt-get install avahi        # 通常这个包已经安装了的
% sudo apt-get install nss-mdns

注意:如果需要自己编译安装 netatalk 包,则需要加入 ssl 支持,具体看编译脚本参数。

配置

上面的软件包正常安装完毕以后,接下来就是配置了。

服务器端

1、编辑 /etc/default/netatalk 文件,找到对应的内容,更改为

ATALKD_RUN=yes
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

2、编辑文件 /etc/netatalk/afpd.conf 在最底部加入行:

- -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword

3、编辑文件 /etc/nsswitch.conf 在最底部加入行:

hosts:  files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns

4、新增文件 /etc/avahi/services/afpd.service,内容为:

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_afpovertcp._tcp</type>
        <port>548</port>
    </service>
    <service>
        <type>_device-info._tcp</type>
        <port>0</port>
        <txt-record>model=Xserve</txt-record>
    </service>
</service-group>

这个时候 netatalk 协议已经配置完毕,我们要共享出个目录让 Mac 映射为磁盘。编辑文 件 /etc/netatalk/AppleVolumes.default 加入下面的行:

~/TimeMachine   "TimeMachine"   allow:mingcheng    cnidscheme:cdb options:usedots,upriv,tm

简单得说明下:

  • 其中的 mingcheng 为用户名,它指定了哪些用户应用该规则。如果有多个用户,则使用“,”逗号分割。
  • ~/TimeMachine 为用户主目录下的 TimeMachine 目录,也就是我们要保存备份数据的目录。
  • "TimeMachine" 为映射磁盘的名称,便于辨别起见,通常不用更改。
  • 较关键的地方是 “options:tm”,这个选项其实就是让 netatalk 充当 Time Machine 服务器的意思(via)。
  • 更多的配置参见配置文件中的说明,很详细。

Tips:由于备份数据比较大,可以考虑 mount --bind 映射到 Linux 本地的其他合适的分区或目录(详细)。

至此,基本的 Linux 服务器端配置完毕,重启服务(重启需要花点时间)

% service netatalk restart
% service avahi-daemon restart

http://files.gracecode.com/2011_02_10/1297309091.png

http://files.gracecode.com/2011_02_10/1297309108.png

重启服务以后,在 Mac 端连接 Linux 服务器,输入对应的用户名和密码以后,即可挂载已经配置好的磁盘。

Mac 端

在 Mac 端,我们还需要做些配置。打开终端(Terminal),执行下面的命令使 Time Machine 能够使用网络磁盘作为备份盘:

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

由于部分兼容性问题,还需要另外手工制作磁盘疏散镜像。打开“偏好设置”中的“共享”,可以看见“电脑名称”, 例如我的是“明城的 Macbook Pro”(注意大小写和空格),这里将其命名为 <computer_name>

http://files.gracecode.com/2011_02_10/1297309156.png

然后,打开终端粘贴如下面的命令获得本机的网卡 Mac 地址,这里将其命名为 <mac address>

ifconfig en0 | grep ether | awk '{print $2}' | sed 's/://g'

如图,例如我的是

http://files.gracecode.com/2011_02_10/1297309174.png

然后运行下面的命令,注意将上步骤获得的 <computer_name><mac address> 代入命令行:

sudo hdiutil create -size 320g -type SPARSEBUNDLE -nospotlight -volname "Backup of <computer_name>" \
    -fs "Case-sensitive Journaled HFS+" -verbose ~/Desktop/<computer_name>_<mac address>.sparsebundle

注意:-size 320g 参数是本机的硬盘容量,请根据实际情况更改。

最终在桌面会有个类似我本机的文件名(注意空格等字符):

明城的 Macbook Pro_0026bb6a1f40.sparsebundle

然后将这文件扔到上面配置好的 Linux 网络磁盘根目录。打开 TimeMachine 选择对应的磁 盘,即可以开始开始备份。

http://files.gracecode.com/2011_02_10/1297309244.png

http://files.gracecode.com/2011_02_10/1297309278.jpg

Tips:首次网络备份会比较缓慢,建议插入网线。

一般问题

问:这样做符不符合 Apple 的协议?
答:未知,如有明确结果的,请各位告知。

http://files.gracecode.com/2011_02_10/1297309298.jpg

问:为什么我选择网络磁盘以后,TimeMachine 一直在“正在准备磁盘”?
答:这是磁盘疏散镜像没有制作正确,或者你命名的文件名不正确。可以暂停备份,挂载网络磁盘看 TimeMachine 为你自己生成的文件名,然后在将上面步骤生成的文件替换。

问:TimeMachine 的备份数据是加密过的吗?
答:抱歉,保存在服务器上的数据是 没有加密 的(数据传输如有 SSL 是加密的)。

参考资源

-- EOF --

相关 [linux time capsule] 推荐:

自建基于 Linux 的 Time Capsule 服务

- Class4 - Gracecode.com
2011-02-14 更改 netatalk 部分配置参数. 2011-02-10 初始化版本. Apple 的 Time Machine 提供了非常完备的数据备份方案,但每次使用外接磁盘备份很 麻烦也很容易忘记备份. 同时,个人对于 Time Capsule “高昂的”售价(虽然它的确值那些钱)颇有微词.

掀起新.Time Capsule 的盖头来,让我看看...咦!说好的服务器级硬盘到哪去了?

- 亚 强 - Engadget 中国版
呃,什么叫做相见不如怀念,大概就是拆开号称装有「服务器级」硬盘的新 Time Capsule 之后,却发现里头装的那颗硬盘是 Western Digital 的绿标 WD20EARS. 看完之后心里只有一堆问号,难道说最近在北卡开张的那座数据中心里头的服务器都是用这款硬盘. 难怪最近开 iTunes 下载软件时好像有变卡的感觉.

Long time no see,英式中文

- cow - 刁民公園
昨天「星期日檔案」探討港式英語. 節目中好幾個嘉賓包括楊鐵樑先生都說long time no see是港式英語. 楊官的英文程度不會令人懷疑,但long time no see有其背景,不能算作港式英語.

被忽视的time命令

- - 火丁笔记
如果要选 Linux 下最容易被忽视的命令,time 应该算一个. 简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;另一方面很多人虽然知道 time 的存在,但是却并没有真正理解它的含义.

Google Analytics Real-Time 实时报告开测

- Ray - 谷奥——探寻谷歌的奥秘
先进的互联网越来越强调实时性,Google Analytics终于也开始了这方面的尝试. 以前我们必须等到第二天才能看到第一天的统计数据,今天随着Google Analytics Real-Time的上线,实时的统计数据报告已经不是梦了. 实时统计对于衡量社交媒体对网站的贡献率是非常重要的,在博文发出之后,你即可实时看到各个社交网络引入的流量:.

夏娃的时间:Just enjoy the time of EVE

- Eastar Lee - ACG批评
08年的《夏娃的时间》作为吉浦康裕的第三部动画作品,也是最长的一部作品,在剧情主旨和背景设定上都带有其出道作《水之语》的很多影子. 人类和机器人之间关系,可以说是SF作品中永恒的主题之一,无数电影动漫小说都对这个主题进行过探讨,要把这个老调常弹的主题说出新意并不是一件容易的事情,但是《夏娃的时间》做到了.

Popcorn Time – 开源电影播放器

- - 小众软件
Popcorn Time 是一个很火爆的开源电影播放器,无需完全下载就可以直接播放 yts 里的高清电影,并且能够加载外挂字幕文件. 由于有版权争论, Popcorn Time 以开源的方式让其不会被版权机构干掉,不过…不知道老外是否想到了天朝早已有类似服务的商业公司. Popcorn Time 已经提供了 Windows、OS X、Linux 三个平台的客户端,无广告,有搜索、分类.

『Time』一周摄影图片精选:June 25 - July 08, 2011

- 翼翔 - 『Leica中文摄影杂志』
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 美国佛罗里达州肯尼迪航天中心,“亚特兰蒂斯”号航天飞机将于8日发射,这是“亚特兰蒂斯”号最后一次执行太空任务. The shuttle atlantis on mission sts-135 sits on launch pad 39 after the rotating service structure has been rolled back at kennedy space center, cape canaveral, florida, usa..

『Time』一周摄影图片精选:July 30 - August 05,2011

- L - Leica中文摄影杂志
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 一名学生在斋月晨祷阅读“古兰经”,印度尼西亚. A student read the Quran before morning prayers in the holy month of Ramadan at the Al-Mukmin Islamic boarding school in Solo, Indonesia, Tuesday..

『Time』一周摄影图片精选:August 06 - 13, 2011

- Roger - Leica中文摄影杂志
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 一名摘葡萄工在倾倒整篮的白葡萄,法国Domaine de Rombeau葡萄庄园. 摄影师:Guillaume Horcajuelo. 大雨的积水导致学校被淹,两名小学生在水中搬运自己的桌椅,印度. 摄影师:Mukesh Gupta.