前要:
一直以来使用外置硬盘给 Mac 做 Time Machine 备份盘,但是存在若干不够方便的地方,如:
- 磁盘需要格式化为 APFS 格式,虽然 APFS 的“卷共享容器空间”的机制可以很方便的让 Time Machine 卷和其他资料卷共用空间,而不是像传统的分盘让空间分隔,还要考虑空间分配问题。但 APFS 格式只在 macOS 设备间方便使用
- 虽然在不连接磁盘的情况下,内置存储也会保留24小时内到每小时快照,但总是需要刻意记起找出插入硬盘进行备份的操作
正好最近使用旧电脑刷了 Ubuntu 用作 NAS 使用,于是想了解关于如何配置无线 Time Machine。
无线Time Machine的共享协议选择:
最开始找到的教程是使用 AFP 的开源实现 netatalk 让 Linux 支持 AFP 共享协议,然后作为 Time Machine 盘。但发现 netatalk 最近曝出过严重漏洞,项目本身在GitHub也只有 0.2K Star 的关注。主观感觉其稳定性是存在疑问的。
后来发现,并不一定是 AFP 协议的共享才能做 Time Machine 备份盘;Samba 只要进行一些配置就能做 Time Machine 备份用了。
在 Apple 官方文档中说明有写到
【提示】如果可以选择 SMB 或 AFP,请使用 SMB 来备份到外置备份磁盘。
目前 Apple 官方也是更推荐使用 SMB 协议来作为无线 Time Machine 备份的。
最新的 macOS Tahoe 26.2 已经提示下个版本不再支持 AFP 进行备份了,如下图:

ubuntu 24.04上Samba的配置
安装 avahi 和 samba :
|
1 2 3 4 5 6 7 8 |
$ sudo apt install samba avahi-daemon # 变更目录所有者权限,给予目标用户写入权限,此处假定用户名为 tms # 否则可能出现目录只读的情况 $ sudo chown -R tms:tms /home/data/.timemachine $ sudo chmod -R 775 /home/data/.timemachine |
在原来的 /etc/samba/smb.conf 尾部增加如下配置:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
[TimeMachine] # 存储路径 path = /home/data/.timemachine # 是否允许遍历目录 browseable = yes # 是否只读 read only = no # 目录可以写入,否则是只读的,只是 read only = no 是不够的 writable = yes # 是否允许游客访问 guest ok = no # 注释 comment = Backup for Mac Computers # 指定可以访问的用户名,用户名必须是已经存在的,这里只是许可已经存在的用户可以访问 valid users = tms # 指定可以访问的用户名,用户名必须是已经存在的,这里只是许可已经存在的用户可以访问 write list = tms # vfs_catia 提供非法字符转换以正确映射 Apple 路径。 vfs_fruit 是用于实现与 Apple SMB 客户端兼容,vfs_streams_xattr 是允许在底层文件系统中存储 NTFS 备用数据流的主要模块 vfs objects = catia fruit streams_xattr fruit:aapl = yes fruit:time machine = yes # 设置最大可用空间 # fruit:time machine max size = 500G |
更详细的配置可参考
Configure Samba to Work Better with Mac OS X
创建 smb 配置文件中指定的用户:
|
1 2 3 |
# 给可以访问的用户设置密码,用户名必须是已经存在的,否则会失败 $ sudo smbpasswd -a tms |
重启服务,使得配置生效,如下:
|
1 |
$ sudo systemctl restart smbd |
macOS上的配置:
打开访达,边栏上应该能直接看到服务器,点击后点上面的“连接身份...”,再点“注册用户”,输入用户和密码,勾选“在我的钥匙串中记住此密码”,点连接,随后会显示出多个共享,多选连接即可。
如果边栏没有,则需按command+K来手动连接,输入smb://xiaomingnas.local。这里xiaomingnas.local中的xiaomingnas是主机的hostname,通常avahi的mDNS服务会使用<hostname>.local作为域名。点连接,后续步骤与上述相同。
随后在 Mac 的系统设置-通用-时间机器,点+号,就能选择设置的 Time Machine 进行备份了。然后根据提示设置登录用户名,时间机器的加密密码即可。
无线备份受限于网络传输速度,首次备份可能需要数小时才能完成,可耐心等待。
Time Machine 默认设置了速度限制,以保障网络和磁盘可正常使用,首次备份可以在 Mac 上暂时解除该限制
|
1 2 3 4 5 6 7 8 |
# 解除限制 $ sudo sysctl debug.lowpri_throttle_enabled=0 # 恢复速度限制: $ sudo sysctl debug.lowpri_throttle_enabled=1 # 查看状态 $ sysctl -n debug.lowpri_throttle_enabled |
用外置磁盘和无线共享设置Time Machine的区别:
使用外置磁盘备份,点击边栏上的卷后,可以看到目录形式展示的每次的备份,并直接查看其中的目录文件。还可以方便地多选备份进行删除,来腾出空间占用
而使用 SMB 共享作为备份盘。这会在共享路径下生成一个类似“小明的MacBook Air.sparsebundle”目录。大致结构如下
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ tree -L 2 . └── 小明的MacBook Air.sparsebundle ├── bands ├── com.apple.TimeMachine.MachineID.bckup ├── com.apple.TimeMachine.MachineID.plist ├── com.apple.TimeMachine.Results.plist ├── com.apple.TimeMachine.SnapshotHistory.plist ├── Info.bckup ├── Info.plist ├── lock ├── mapped └── token |
其中 bands 目录中会有大量固定大小为 67MB 的二进制文件,这些便是备份的数据。
Apple 官方对 sparsebundle 的解释的大致意思是,它是一个以二进制形式存储的,可按需收缩和扩大的可扩展文件。
这样看用 SMB 共享设置 Time Machine 实际上更加灵活,相比之下不挑磁盘格式,且备份在 Linux 上的磁盘中仅作为某个路径下的某个目录存在,而不像使用外置磁盘备份一样单独占据一个 APFS 卷。
但其不能像外置磁盘一样,可以任意多选删除备份来腾出空间。但可以设置 fruit:time machine max size 来限制备份大小,这样达到空间临界点时 macOS 就会自动删除最旧的备份来腾出空间。当然,磁盘备份同样也可以在添加 APFS 卷时,通过设置“配额大小”来限制 Time Machine 过度膨胀(但设置完毕后不易变更)

