aaron67's log

用树莓派实现Time Capsule

坊间传言

备份不做,十恶不赦

定期插移动硬盘跑Time Machine做备份太麻烦,官方Time Capsule又有点贵,用Pi搞个Time Capsule是坠吼的哇

准备好

  • 一个正常运行的Pi
  • 用于备份的移动硬盘
  • 带外接电源的USB集线器,Pi自带的USB口可能电压不够带不动外接硬盘

处理硬盘

先确认一下Pi是否识别了外接硬盘

$ sudo fdisk -l
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
...
Device      Start       End   Sectors   Size Type
/dev/sda1      40    409639    409600   200M EFI System
/dev/sda2  411648 625141759 624730112 297.9G Microsoft basic data   <== 看这里

格式化分区,我这里要格式化/dev/sda2

$ sudo mkfs.ext4 /dev/sda2

新建硬盘挂载点

$ sudo mkdir /mnt/TimeCapsule

为了让Pi开机后能自动挂载外接硬盘,在/etc/fstab文件尾添加

/dev/sda2       /mnt/TimeCapsule        ext4    rw,defaults     0       0

重启Pi之后,确认一下硬盘能成功mount上

pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  3.5G   10G  26% /
...
/dev/sda2       294G   63M  279G   1% /mnt/TimeCapsule   <== 看这里
pi@raspberrypi:~ $

修改硬盘挂载点的owner

sudo chown -R pi:pi /mnt/TimeCapsule

安装配置netatalk

Netatalk is a freely-available Open Source AFP fileserver. A NIX/BSD system running Netatalk is capable of serving many Macintosh clients simultaneously as an AppleShare file server (AFP).

$ sudo apt-get install netatalk

在文件/etc/netatalk/AppleVolumes.default尾添加

/mnt/TimeCapsule "Time Capsule" options:tm

AppleVolumes.default文件的每一行,代表一个共享文件夹,默认的,当前用户的家目录会被共享出来,名字为Home Directory

# By default all users have access to their home directories.
~/    "Home Directory"

重启netatalk服务

$ sudo service netatalk restart

确认

这时候,Time Machine的设置里,应该能看到Pi上挂的盘了

time-machine-hdd-available

选择硬盘,输入用户名、密码验证身份,完成配置

注意,这里输入的用户名,应该和第一节最后一步 chown 的相同(我这里是用户 pi),否则可能有读写权限的问题

time-machine-rpi-auth

打开Finder,也能看到Pi共享出来的两个文件夹

time-machine-pi-netshare

踩到的一些坑

可能是网上搜到的文章都比较老了,最开始,我参考这篇文章这篇文章这篇文章这篇文章做了一遍配置,报了下面的错误

time-machine-rpi-error

不知道是什么情况。好在最后换了个套路搞定…所以我感觉

  • 硬盘不一定非要是hfs+格式
  • 不用配置Avahi

参考

如果你觉得文章不错,可以请我喝杯咖啡