利用 Raspberry Pi(树莓派)打造 Time Capsule(时间胶囊)

利用 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 登陆到你的树莓派

ssh [email protected]

接着进行软件更新来避免不必要的错误

sudo apt-get updatesudo apt-get upgrade

然后重启一下机器后,再次使用 SSH 登陆到树莓派。

为树莓派添加 HFS / HFS+ 支持

sudo apt-get install hfsprogs hfsplus

为了以后恢复备份,我们需要使用使用特定格式的硬盘来配合 Time Capsule 使用。

格式化、挂载硬盘

将硬盘连接至你的 Mac,打开 Disk Utility。

img

将硬盘格式化为 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

img

安装 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 填入刚刚创建的用户名和密码就可以进行第一次备份了!

img

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