Debian 挂载 Apple Time Machine 的可行方案
目标与前提
- 在 Debian 上让 macOS Time Machine 把备份写到 Linux 主机的磁盘,需要开启 AFP 文件共享并让 Mac 发现服务;Linux 端以只读方式“挂载/访问”Time Machine 稀疏磁盘镜像(.sparsebundle)通常不可行,推荐做法是把备份目录作为共享卷提供给 Mac 使用。
- 准备:一块容量充足的磁盘或分区(如 /dev/sdb1),已格式化为 ext4 并挂载到如 /mnt/tm;一个用于登录的 Linux 用户(如 tmuser),并确保该用户对备份目录有读写权限。
方案一 推荐 将 Debian 作为 Time Machine 备份目标 AFP Netatalk
- 安装组件
- sudo apt update
- sudo apt install -y netatalk avahi-daemon
- 配置共享卷(两种等效方式,二选一)
- 方式 A(传统 AppleVolumes.default)
- 编辑:/etc/netatalk/AppleVolumes.default
- 建议注释默认 Home 共享行(以 # 开头)
- 增加一行(示例):
- /mnt/tm “TimeMachine” options:tm allow:tmuser
- 说明:
- options:tm 标记该卷为 Time Machine 可用
- allow:tmuser 仅允许指定用户写入
- 如需配额,可加 volsizelimit:500000(单位 MB,示例为约 500GB)
- 方式 B(新版 afp.conf)
- 编辑:/etc/netatalk/afp.conf
- 示例:
- [Global]
- [TimeMachine]
- path = /mnt/tm
- time machine = yes
- 让 Mac 发现服务(Avahi)
- 新建:/etc/avahi/services/afpd.service
- 内容:
-
%h
_afpovertcp._tcp
548
_device-info._tcp
0
model=Xserve
- 权限与目录
- sudo chown -R tmuser:tmuser /mnt/tm
- sudo chmod 0700 /mnt/tm
- 启动与开机自启
- sudo systemctl enable --now netatalk avahi-daemon
- 防火墙(如启用 UFW)
- 在 Mac 上选择备份磁盘
- 打开“系统设置 > 通用 > 时间机器”,点击“添加备份磁盘”,选择名为 TimeMachine 的共享;首次备份可能较慢,建议接通电源并保持网络稳定。
方案二 只读访问已有 Time Machine 备份 sparsebundle(不推荐)
- 背景说明
- Time Machine 在 SMB/AFP 上以 稀疏磁盘镜像(.sparsebundle) 形式存放备份。Linux 内核不支持直接挂载这种镜像,通常需要借助用户态文件系统(如 FUSE 的 hfsplus/afuse 等),且即便能挂载也多为只读,难以用于恢复或继续增量备份。
- 简要尝试思路(仅用于读取验证)
- 安装 FUSE 与相关工具(示例):sudo apt install -y hfsplus hfsutils afuse
- 不建议直接 mount,可尝试只读方式通过 afuse/hfsplus 访问,但成功率与一致性不保证,且对 Time Machine 的后续使用无益。
- 建议
- 若只是读取历史版本,建议在 macOS 上挂载该 .sparsebundle 进行浏览与恢复;若要继续在 Debian 上作为备份目的地,请采用方案一提供 AFP 共享卷。
常见问题与排查
- 看不到 Linux 主机
- 确认 Avahi 已运行(sudo systemctl status avahi-daemon),防火墙放行 548/TCP,以及 afpd.service 配置正确;在 Mac 的“网络”中浏览或“前往 > 连接服务器”手动连接 afp://你的主机名。
- 能连接但 Time Machine 不显示磁盘
- 确认共享卷配置中包含 options:tm(AppleVolumes.default)或 time machine = yes(afp.conf),并且登录用户对目录有写权限;必要时在 afp.conf 的 [Global] 中设置 uam list = uams_dhx2.so(按需选择认证方式)。
- 权限或配额问题
- 使用 allow:用户名 精确授权;需要限制备份容量时使用 volsizelimit:大小MB;确保备份目录属主与权限正确(如 0700)。
- 服务未启动或开机不自启
- 使用 sudo systemctl enable --now netatalk avahi-daemon 启用;检查日志:journalctl -u netatalk -u avahi-daemon。