Linux搭建TimeMachine备份服务器
上了pdd的车,最终还是入手了一台丐版mbp,256G的存储空间使用起来让人心疼,Time Machine本来是一款很不错的备份工具,然而有限的空间经不起它无止境扩大的备份策略的折腾了。备份不做,十恶不赦,好在实验室的服务器最近一直闲置,在网上看了几套方案之后就准备开始了。
开始之前
在开始之前,首先最好选择一个合适的账户登录主机,这个账户将在之后被用来进行远程登录获取服务。
安装Netatalk和Avahi
Netatalk是一个开源的协议,支持类Unix系统为Mac提供文件服务,安装Netatalk:
sudo apt install Netatalk
Avahi允许程序在本地网络环境中分发与提供服务,同样通过apt安装Avahi:
sudo apt avahi
创建文件 /etc/avahi/services/afpd.service
来配置 avahi,写入如下内容:
1 | <service-group> |
挂载硬盘
参考博客的作者采用了HFS+来对硬盘进行处理(格式化?),通过apt install hfsplus
即可成功安装,博客中由于是安装的精简系统,在使用modprobe hfsplus
之后报错,需要打官方补丁才能解决这个坑,而我们不需要。
由于在当初安装192.168.1.253
机器的时候,将Samsung 970 evo 1T单独放在一边,未在其中初始化分区,因此这块硬盘上还是windows的分区格式,通过fdisk -l
查询到这块硬盘的名称为/dev/nvme0n1
,将它格式化为ext4
sudo mkfs.ext4 /dev/nvme0n1
不知道从哪看的规矩,说是挂在硬盘要放在/media
下,不过这也无关紧要,mkdir /media/nvme0n1
,再将硬盘挂载到该目录上:
mount -t hfsplus -o force,rw /dev/nvme0n1 /media/nvme0n1
由于mount
命令在重启服务器之后会失效,所以将分区信息写入文件中:
sudo vi /etc/fstab
1 | /dev/nvme0n1 /media/nvme0n1 ext4 defaults 0 2 |
这句中2代表在系统开机时会对该分区进行快速检测,如果你不希望这么做,可以把它改成0跳过开机检测。
权限问题
如果是按照顺序来的话,应该此处不会遇到权限问题,但我当时没有。
比较严谨的方法
挂载成功后你的非 root 用户可能是无法写入的,这是由于磁盘内容自有用户造成的,最简单的办法可能就是欺骗文件让它以为你还是原来的用户。mac 中默认用户 UID 是 501,那么我们就把跑 netatalk 的用户id改为 501:
1 | sudo groupadd admin //创建管理组 |
做完之后退出当前用户,然后用这个临时用户进去,如果你用的是 ssh,那么就退出来,用 ssh tempuser@xxx.xxx.xxx.xxx 重新登录。登录之后继续:
1 | sudo usermod --uid 501 yourusername //改你刚才用户的uid |
这时候你可能会收到提示说还有进程在占用,不能改。这很好办,根据提示的pid,干掉那个进程即可: sudo kill <pid>
然后重复执行上面的命令,没关系,有多少个占用就干多少个……
1 | sudo chown -R 501:yourusername /home/yourusername |
接下来,你就可以退出然后用你原来的用户登录了,这时候再去挂载的目录看看,已经可写。别忘了删除那个临时用户:
1 | sudo userdel -r tempuser |
比较粗暴的方法
之后用哪个用户登录,直接把对应文件夹及子文件的所有者全改了
1 | chown -R username:usergroup /media/ |
简单粗暴,配合更高权限的用户,先解决问题再说,反正只是内网。
配置Netatalk
创建Time Machine的备份文件夹:
1 | mkdir /media/nvme0n1/TimeMachine |
大写G直接跳到文件末尾,加上:
1 | # The line below sets some DEFAULT, starting with Netatalk 2.1. |
重点就是第三行末尾的 options:tm 标记这一句让对应的目录对 TimeMachine 可见。
最后,我们重启对应的服务:
1 | sudo service netatalk restart |
Mac端设置
在Mac终端中执行这条命令让tm发现网络备份位置:
1 | defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1 |
这下你就应该已经能够在 tm 配置中发现你的网络位置了!
给服务器添加 windows 共享
win 使用的共享协议叫做 samba,协议的名字叫 smb,mac其实能够支持smb,这样的话我们就可以让 tm 走 afp,另外来一个目录专门跑 smb,用来 mac 和 win 共享文件了。 使用如下命令来安装 samba:
1 | sudo apt-get install samba |
备份原配置文件:
1 | sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak |
编辑配置文件: vim /etc/samba/smb.conf
,在末尾追加如下内容:
1 | [share] |
这个share就是之后的地址了,这里等于做了个地址映射。然后为 samba 创建一个用户,这个用户必须是已经存在的用户:
1 | sudo smbpasswd -a smbuser |
创建的密码就是你要登录 samba 的密码,别记错了。最后重启服务:
1 | sudo service smbd restart |
之后windows上连接到服务器就只需要在网络映射配置中加上\\192.168.1.253\share
,再输入对应密码,就可以像访问本地磁盘一样访问服务器上的磁盘了。