Time Machine是MacBook提供的一个系统备份和还原的工具,但是平时总是连接着一个备份硬盘很麻烦,多方查找发现如果有服务器或者NAS的话,可以将远程硬盘作为Time Machine备份盘,现记录如下。

准备

服务器系统: ArchLinux

需要的软件:

1
pacman -S netatalk

netatalk 和 avahi - 实现零配置(zeroconfig,由Avahi实现)的苹果文件协议(Apple Filing Protocol,由netatalk实现),使得苹果设备能够通过网络实现TimeMachine备份

端口映射: AFP协议使用548端口,如果服务器位于内网需要端口映射的话请注意

配置

配置 /etc/afp.conf:

1
2
3
4
5
6
7
8
9
10
11
[Global]
mimic model = TimeCapsule6,106
hosts allow = 192.168.1.0/16
log file = /var/log/afpd.log
log level = default:info

[Time Machine]
path = /g_data/g_backup/timemachine
valid users = timemachine
time machine = yes
vol size limit = 200000

  • mimic model: 表示模拟的机器的型号,默认
  • hosts allow: 允许访问的网络,默认
  • log file: 日志文件,默认
  • log level: 日志记录级别,有info, warn, debug 等,默认
  • path: Time Machine 路径,需要自己设置
  • valid users: 登录用户,该用户是服务器上的用户,对上面path目录要有访问权限,Mac客户端连接TimeMachine的设备会提示帐号密码,认证通过后才能访问磁盘,需要自己设置
  • time machine: Yes,默认
  • vol size limit: Time Machine的最大允许备份空间,单位是MB,这里是200G,可以自己设置,可以默认

如果没有/etc/netatalk/afpd.conf/etc/netatalk/AppleVolumes.default的话,需要创建并写入:

1
2
3
4
$ cat afpd.conf 
---tcp -noddp -uamlist uams_randnum.so,uams_dhx.so,uams_dhx2.so -nosavepassword
$ cat AppleVolumes.default
/path/to/TimeMachine TimeMachine allow:<user> cnidscheme:dbd options:usedots,upriv,tm
  • /path/to/TimeMachine: /ect/afp.conf中的path
  • <user>: /ect/afp.conf中的valid users

启动服务

1
2
systemctl start netatalk.service # 启动服务
systemctl enable netatalk.service # 开机启动服务

Setting up time machine/netatalk/afp on arch linux arm (pogoplug)验证下来还是有问题的。虽然上述步骤可以将磁盘挂载好,但是使用 TimeMachine 选择磁盘的时候却看不到这个挂载磁盘。原因是TimeMachine需要使用使用zeroconf来发现设备,这个zeroconf在Linux上的实现称为 Avahi
Avahi是一个自由软件的”零配置网络”实现(Zero-configuration networking, zeroconf),包括了多播DNS/DNS-SD服务发现系统。允许程序发布和发现位于一个局域网内的服务而不需要做任何配置。例如,你可以加入一个网络并立即找到打印机进行打印,或者查看文件以及和其他用户通讯。(Avahi(software))

启动服务

1
2
systemctl start avahi-daemon.service # 启动服务
systemctl enable avahi-daemon.service # 开机启动服务

使用

Finder访达中输入Command+K,地址栏输入afp://ip-of-your-server,输入用户名和密码认证后会挂载好Time Machine。

此时打开Time Machine设置,添加里会出现挂载好的远程硬盘。
Time Machine

Reference