利用 Raspberry Pi(树莓派)打造 Time Capsule(时间胶囊)
2018 年 4 月 27 日,Apple 宣布停产旗下 AirPort 产品,包括 AirPort Extreme 及 AirPort Time Capsule(Apple 译作时间返回舱,不过我还是喜欢时间胶囊),退出无线路由器市场。
在很长的一段时间里,笔者确实很想买上一台 Time Capsule,然而高昂的售价(在中国大陆,3TB 版本售价高达 RMB 2873),让我不太满意的无线网络性能,还是望而却步。
不过我们仍然可以使用树莓派外接一块硬盘来实现相同的效果。造价不过区区的 35 美元(Raspberry Pi 的标准售价)。
今天我们就来一起实现树莓派版的时间胶囊!
所需设备(环境):
- 外置硬盘
- Raspberry Pi(我用的是 3B 版本)
- RASPBIAN STRETCH LITE
开始!
环境初始化
首先使用 SSH 登陆到你的树莓派
接着进行软件更新来避免不必要的错误
sudo apt-get updatesudo apt-get upgrade
然后重启一下机器后,再次使用 SSH 登陆到树莓派。
为树莓派添加 HFS / HFS+ 支持
sudo apt-get install hfsprogs hfsplus
为了以后恢复备份,我们需要使用使用特定格式的硬盘来配合 Time Capsule 使用。
格式化、挂载硬盘
将硬盘连接至你的 Mac,打开 Disk Utility。

将硬盘格式化为 Mac OS扩展(日志式)后保存。
由于 Linux 不支持读取日志式硬盘, 所以我们需要手动禁用日志。
打开终端
diskutil list
找到硬盘后使用 disableJournal
来禁用日志。
接下来显示硬盘简介,将读写权限赋予 everyone 后,选中忽略此宗卷上的所有权。
以下为单片机端操作:
创建新目录
sudo mkdir /mnt/timecapsule
将硬盘挂载到新创建的目录
sudo mount /dev/sda1 /mnt/timecapsule
df -h
查看挂载信息
[2019/05/22 UPDATE](注:树莓派重启后可能会将硬盘挂载至默认路径,此时只需使用 df -h
列出挂载信息,`umount` 磁盘后重新挂载至上文路径。)
df -h

安装 Netatalk
先安装依赖
apt-get -y install libdb5.3-dev libgcrypt11-dev avahi-daemon libavahi-client-dev libacl1-dev
下载安装包
wget wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.11.tar.gz
编译安装
tar -xzf netatalk-3.1.11.tar.gzcd netatalk-3.1.11./configure --with-zeroconf --with-init-style=debian-sysv --with-aclsmakemake install
创建一个新用户
useradd timecapsuleusermod -aG users timecapsule
授权
chown timecapsule:users /mnt/timecapsulechmod 775 /mnt/timecapsule
修改 Netatalk 配置文件
sudo vim /usr/local/etc/afp.conf
写入以下信息后wq保存
[Global]mimic model = TimeCapsule6,106log level = default:warnlog file = /var/log/afpd.loghosts allow = 196.168.0.0/16
[Time Capsule]path = /mnt/timecapsuletime machine = yesvalid users = timecapsule
启动服务
sudo rebootservice avahi-daemon restartservice netatalk restart
然后打开 Time Machine 填入刚刚创建的用户名和密码就可以进行第一次备份了!

因为 mount
挂载在重启后会失效,所以需要将分区信息写到 etc/fstab 文件中让它永久挂载:
sudo vim /etc/fstab
写入
/dev/sda1 //磁盘分区 /mnt/timecapsule //挂载目录 ext4 //文件格式 defaults 0 0\
将 Netatalk 设置开机自启
sudo update-rc.d avahi-daemon defaultssudo update-rc.d netatalk defaults