使用 Netatalk 让 Linux 与 Mac OSX 共享文件,同时为 Mac 搭建 TimeMachine 备份服务器

Apple Mac OSX 系统自带了一款简单易用的备份软件 Time Machine,它能够每小时进行增量备份(即只备份有更改的文档),所以如果你使用 MacBook Pro/Air 笔记本而且需要处理的文档比较多,那么使用 Time Machine 通过无线网络备份是一种不错的选择。可惜使用 Time Machine 需要一个外接硬盘或者购买一台 Apple Time Capsule 设备,而下面的方法是通过安装 netatalk 软件,让一台普通 Linux PC 能与 Mac OSX 共享文件并且还能充当 Time Machine 的备份服务器。

1、安装 Netatalk(Fedora 和 Ubuntu 适用)
Netatalk 是一个免费开源的 AppleTalk 通信协议的实现,Linux 或者 BSD 系统通过它可以充当 Mac 的文件服务器 (AppleShare File Server, 网络协议是 AFP)、AppleTalk 路由、打印服务器等。

使用如下命令安装 netatalk:
$ sudo apt-get install netatalk

2、安装 Netatalk(Archlinux 适用)
由于 Archlinux 官方源里头没有 netatalk,所以需要使用源代码方式安装,幸好有一些已经做好的 ABS 可用,在 AUR 里可以搜索到:https://aur.archlinux.org/packages.php?K=netatalk

下面使用的是 netatalk-git 版,下载压缩包 netatalk-git.tar.gz,然后开始编译安装:

$ tar -xzvf netatalk-git.tar.gz
$ cd netatalk-git
$ makepkg -s
$ sudo pacman -U netatalk-xxx.pkg.tar.xz

3、设置共享文件夹
编辑文件 /etc/netatak/AppleVolumes.default,这里的每一行即代表一个共享文件夹,默认会把当前用户的 $HOME 文件夹共享出来,如果不希望这样的话则找到“~”一行并把它注释掉,加入如下的一行:

/home/yang/share/mac “Mac”

这表示将 /home/yang/share/mac 文件夹共享出来,共享名为 “Mac”。

4、设置 Time Machine 备份文件夹
跟上一步类似,只要在共享设置后面增加参数 “options:tm” 就可以了,比如:
/home/yang/share/timemachine “TimeMachine” options:tm

5、安装及配置 Avahi
Avahi 是 Apple’s Zeroconf 协议的开源实现,实现类似 Bonjour 的功能,它可以让你在 Mac 系统里自动发现你的 Linux 计算机。

$ sudo yum install avahi-daemon (Fedora 适用)
$ sudo apt-get install avahi-daemon (Ubuntu 适用)
$ sudo pacman -S avahi-daemon (Archlinux 适用)

创建文件 /etc/avahi/services/afpd.service,写入如下内容:(Archlinux 已经存在此文件,不需要创建)

<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>

6、启动 netatalk 和 avahi

$ sudo service netatalk restart
$ sudo service avahi-daemon restart

对于 Archlinux 则是:

$ sudo /etc/rc.d/cnid start
$ sudo /etc/rc.d/afpd start
$ sudo /etc/rc.d/avahi-daemon start

如果希望他们自动启动,则在 /etc/rc.conf 当中的 DAEMONS= 后面添加这3个守护程序。

7、Mac OSX 系统上的设置
打开 “Finder” -> “前往” -> “连接服务器…” -> “浏览”,这时应该看到你的 Linux 计算机,使用 Linux 系统中的帐号和密码登录进入之后应该会看到 “Mac” 和 “TimeMachine” 文件夹。

然后在 Mac 打开一个终端(位于 “应用程序” -> “实用工具” -> “终端”),执行这个命令让 Time Machine 能够使用网络磁盘作为备份目标位置:
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

打开 “系统偏好设置” -> “Time Machine” -> “开” -> “选择磁盘” 然后选择 “Time Machine” 文件夹。

现在所有设置都完成了,测试一下吧

点击菜单栏上的 Time Machine 图标,再点击 “立即备份”,没有问题的话应该开始备份文件了(一般来说可以只备份用户文件,即可以把系统文件都排除掉),首次备份需要很长时间,所以最好接上交流电并且设置节能器永不进入睡眠。

参考资料:
1、http://www.gracecode.com/archives/3057/
2、http://sidikahawa.blogspot.com/2010/03/setting-up-time-machine-server-on-my.html
3、https://wiki.archlinux.org/index.php/Netatalk

15 thoughts on “使用 Netatalk 让 Linux 与 Mac OSX 共享文件,同时为 Mac 搭建 TimeMachine 备份服务器”

  1. 按照上面的方法,为何我按照上面的方法,TimeMachine 备份的时候提示说“网络备份磁盘不支持所要求的 AFP 功能。”

    难道要用最新的netatalk源码重新编译?

    1. 普通的文件共享成功吗?
      还有可以的话请帖 /etc/netatak/AppleVolumes.default 的最后几行内容看看。

      1. 很神奇的,我换了最新的Ubuntu,然后估计是用了最新版的netatalk,居然就正常了。。。

  2. 用外接移动硬盘备份的话,硬盘文件系统用什么格式的好,Mac的文件系统Linux能识别吗

Leave a Reply

Your email address will not be published. Required fields are marked *