使用netatalk打造一款属于自己的Time-Machine在线备份服务器

前言

MAC系统的Time Machine功能曾经拯救过我电脑几次,对于我这种爱折腾的人来说十分有用
但是麻烦的点在于每次需要手动备份,需要插上移动硬盘来进行备份,就很不方便,有时会忘掉
其实MAC是可以在合适的网络硬盘上进行备份的,比如部分NAS,群辉等,但是都太贵了,于是我自己买了一套路由器大小的微型服务器,配置了一块2T硬盘,配置比较一般,但是作为服务器来说够用了,
之后就可以安装centos系统并且安装netatalk和avahi来让mac备份到这台服务器上

1.下载centos7的镜像,将该镜像刻录至U盘

1
2
3
4
5
6
7
8
9
10
#命令确定U盘的路径
diskutil list
#卸载U盘(这里/dev/disk2是查到的U盘路径,一定要确认对)
diskutil unmountDisk /dev/disk2
#安装pv工具
brew install pv
#可视化刻录进度并刻录镜像
pv -cN source < 镜像路径 | sudo dd of=/dev/rdisk2 bs=4m
## 显示下面进度
source: 5.2GiB 5:11:41 [ 503KiB/s] [=====================> ] 71% ETA 2:01:56

2.安装centos7

3.连接网络

可以选择网线直连或者wifi连接,我这里使用的是wifi连接
因为我的无线网卡为高通QCA9377,似乎属于旧版网卡,所以进入系统后打开终端,输入

1
2
3
cd lib/firmware/ath10k/QCA9377/hw1.0/
sudo mv firmware-6.bin ~
sudo mv notice_ath10k_firmware-6.txt ~

来移除不兼容的wifi驱动,留下firmware-5.bin和notice_ath10k_firmware-5.txt即可
这样就可以使用wifi了

4.安装netatalk和avahi

1
2
3
4
5
6
7
8
9
10
11
12
#安装编译所以依赖
yum install gcc make
yum install libgcrypt-devel libdb-devel

#开始准备编译和安装
cd "你新建的文件夹"
wget http://sourceforge.net/projects/netatalk/files/netatalk/3.1.12/netatalk-3.1.12.tar.gz
tar zvxf netatalk-3.1.12.tar.gz
cd netatalk-3.1.12
./configure --with-init-style=redhat-systemd
make
make install

安装后在某个位置新建文件夹当做备份文件夹,按如下配置编辑配置文件
vi /usr/local/etc/afp.conf

1
2
3
4
[TimeMachine]
path=你的备份文件夹
time machine=yes
vol size limit = 500000 #这是限制500GB

5.安装avahi用于网络发现

安装avahi
yum install avahi
然后增加配置文件 vi /etc/avahi/services/afpd.service,如果没有的话就新建一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>

6.设置开机启动

启动程序并设置开机启动
systemctl start avahi-daemon
systemctl start netatalk
systemctl enable avahi-daemon
systemctl enable netatalk
关闭防火墙或者开放 548 端口,否则可能无法连接到netatalk暴露的端口

7.MAC端配置

打开mac的finder,command + k,连接到你的服务器的ip,并输入服务器的用户名密码
afp://192.168.1.X

在系统设置中将加载的网络服务器设置为备份硬盘即可

之后使用过程中,MAC会自动寻找局域网内由avahi广播的机器,自动加载添加过的网络硬盘并备份

8.恢复文件或恢复系统

恢复文件

点击时间机器图标并点击进入时间机器,稍等会便会加载出网络上的时间机器的备份内容,右键某个时间的你想恢复的文件,选择恢复至即可

恢复系统

如果你的MAC挂了,可以通过如下方式全盘恢复你的MAC到一个时间点

开机按住command + R 进入恢复模式
选择时间机器恢复
点击选择网络服务器
输入 afp://用户名:密码@IP地址/网络备份磁盘名
例如 我服务器IP为192.168.50.74,网络备份磁盘名 TIME MACHINE ONLINE,其中的空格需要转义
afp://yu:password@192.168.50.74/TIME%20MACHINE%20ONLINE
回车添加即可
然后选择对应的恢复备份即可恢复