去落格博客阅读完整排版的方便快捷 自用 搭建 TimeMachine 方案
终于换了一个相对稳定的工作环境,现在,我的桌面是这样的:
好了,总之,用移动硬盘定期备份不是长久之计,所以,身为穷逼,我们要给自己寻找一个合适、方便的备份方案了。
俗话说的好:
那么,我们就来说说我的设计方案。
首先,作为一个穷逼,设计备份方案的第一要素是经济……🤦♂️知乎里流行的什么 J1900 之流太贵了,思前想后还是pass掉了,毕竟,我只做备份,不做那么多共享——用不到。
J1900 成品工控 淘宝基本价格在 999左右,我自备了1T的移动硬盘,这个价格有点难以接受。
最后,我找到了一个不在中国上市的产品:BeeLink 的 z83 II !当然,从淘宝购买还会更便宜一些,很实惠。
简单说下配置:
嗯,捡到宝了。
——别忘了,这是成品机器不是主板!
好了,接下来就是软件了,本来我想用 freenas 的,不过真机到手后确实无法引导,会 gaint lock ,似乎是 freebsd 的什么坑,总之,使用 ubuntu 16.04 完美启动。
所以,用的也就是常见的 ubuntu 系列架构了:
首先,把盒子刷成 Ubuntu 这个就不说了,更新后我们安装 Netatalk 和 Avahi:
apt install netatalk apt install avahi-daemon
创建文件
/etc/avahi/services/afpd.service来配置 avahi,写入如下内容:
<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=Xserve</txt-record> </service> </service-group>
接下来就是挂载硬盘了,这里我用的是移动硬盘,为了方便日后一些活动,另外我硬盘中也放了许多文件也不方便备份重新格式化,所以我准备直接用 HFS+
首先,你要在系统中安装插件
apt install hfsprogs,然后使用命令来看系统是否支持
modprobe hfsplus,一般来说,这个命令不会有任何反应的,如果你这样,那就悲剧了,比如我:
modprobe: FATAL: Module hfsplus not found in directory /lib/modules/xxxx
这是说你的内核是精简编译的,你需要打官方补丁。使用命令:
sudo apt-get install linux-image-extra-$(uname -r)
如果你的结果是找不到,那说明你用的是定制过的内核,那就需要你自己来找了,使用命令来搜索可用的包:
apt search linux-image-extra-
Sorting... Done Full Text Search... Done linux-image-extra-4.4.0-1003-gke/xenial-updates 4.4.0-1003.3 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-1005-gke/xenial-updates,xenial-security 4.4.0-1005.6 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-1006-gke/xenial-updates,xenial-security 4.4.0-1006.6 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-21-generic/xenial 4.4.0-21.37 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-22-generic/xenial-updates,xenial-security 4.4.0-22.40 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-24-generic/xenial-updates,xenial-security 4.4.0-24.43 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-28-generic/xenial-updates,xenial-security 4.4.0-28.47 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-31-generic/xenial-updates,xenial-security 4.4.0-31.50 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-34-generic/xenial-updates,xenial-security 4.4.0-34.53 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-36-generic/xenial-updates,xenial-security 4.4.0-36.55 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-38-generic/xenial-updates,xenial-security 4.4.0-38.57 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-42-generic/xenial-updates,xenial-security 4.4.0-42.62 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-43-generic/xenial-updates 4.4.0-43.63 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-45-generic/xenial-updates,xenial-security 4.4.0-45.66 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-47-generic/xenial-updates,xenial-security 4.4.0-47.68 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-51-generic/xenial-updates,xenial-security 4.4.0-51.72 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-53-generic/xenial-updates,xenial-security 4.4.0-53.74 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-57-generic/xenial-updates,xenial-security 4.4.0-57.78 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-59-generic/xenial-updates,xenial-security 4.4.0-59.80 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-62-generic/xenial-updates,xenial-security 4.4.0-62.83 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-63-generic/xenial-updates,xenial-security 4.4.0-63.84 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-64-generic/xenial-updates,xenial-security 4.4.0-64.85 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-66-generic/xenial-updates,xenial-security 4.4.0-66.87 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.4.0-67-generic/xenial-updates,xenial-security 4.4.0-67.88 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP linux-image-extra-4.8.0-28-generic/xenial-security 4.8.0-28.30~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-30-generic/xenial-security 4.8.0-30.32~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-32-generic/xenial-security 4.8.0-32.34~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-34-generic/xenial-updates,xenial-security 4.8.0-34.36~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-36-generic/xenial-updates,xenial-security 4.8.0-36.36~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-39-generic/xenial-updates,xenial-security 4.8.0-39.42~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-41-generic/xenial-updates,xenial-security 4.8.0-41.44~16.04.1 amd64 Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-4.8.0-42-generic/xenial-updates,now 4.8.0-42.45~16.04.1 amd64 [installed] Linux kernel extra modules for version 4.8.0 on 64 bit x86 SMP linux-image-extra-virtual/xenial-updates,xenial-security 4.4.0.66.70 amd64 Transitional package. linux-image-extra-virtual-hwe-16.04/xenial-updates,xenial-security 4.8.0.41.12 amd64 Extra drivers for Virtual Linux kernel image linux-image-extra-virtual-hwe-16.04-edge/xenial-updates,xenial-security 4.8.0.34.6 amd64 Extra drivers for Virtual Linux kernel image linux-image-extra-virtual-lts-utopic/xenial-updates,xenial-security 4.4.0.66.70 amd64 Transitional package. (dummy transitional package) linux-image-extra-virtual-lts-vivid/xenial-updates,xenial-security 4.4.0.66.70 amd64 Transitional package. (dummy transitional package) linux-image-extra-virtual-lts-wily/xenial-updates,xenial-security 4.4.0.66.70 amd64 Transitional package. (dummy transitional package) linux-image-extra-virtual-lts-xenial/xenial-updates,xenial-security 4.4.0.66.70 amd64 Transitional package. (dummy transitional package)
结果有很多,我是 16.04 tls,所以结果都是
xenial,我自己随手选了一个
linux-image-extra-4.8.0-42-generic,安装完成之后重新启动下(可能不重启也行吧)这下再执行
modprobe hfsplus应该就可以了。
使用
sudo fdisk -l来查看你的硬盘位置,比如我的是这样的:
Device Start End Sectors Size Type /dev/sda1 40 409639 409600 200M EFI System /dev/sda2 409640 1953262983 1952853344 931.2G Apple HFS/HFS+ /dev/sda3 1953262984 1953525127 262144 128M Apple boot
这里找到那个最大的分区就对了!
使用命令挂载:
sudo fsck.hfsplus -f /dev/sda2 //强行修复一波,避免错误 sudo mount -t hfsplus -o force,rw /dev/sda2 /media/yourDir
记得把 sda2 改成你自己的位置,挂载点的目录要事先存在才行,不存在你要先创建。里边的第一条命令是用来修复 HFS+ 分区的,这个在 mac 里很常见,以后一旦出现什么奇奇怪怪的问题,都可以用它来修复。
挂载成功后你的非 root 用户可能是无法写入的,这是由于磁盘内容自有用户造成的,最简单的办法可能就是欺骗文件让它以为你还是原来的用户。mac 中默认用户 UID 是 501,那么我们就把跑 netatalk 的用户id改为 501:
sudo groupadd admin //创建管理组 sudo useradd -d /home/tempuser -m -s /bin/bash -G admin tempuser //创建一个临时用户 sudo passwd tempuser //给用户一个密码,别忘记了
做完之后退出当前用户,然后用这个临时用户进去,如果你用的是 ssh,那么就退出来,用
ssh tempuser@xxx.xxx.xxx.xxx重新登录。登录之后继续:
sudo usermod --uid 501 yourusername //改你刚才用户的uid
这时候你可能会收到提示说还有进程在占用,不能改。这很好办,根据提示的pid,干掉那个进程即可:
sudo kill <pid>然后重复执行上面的命令,没关系,有多少个占用就干多少个……
sudo chown -R 501:yourusername /home/yourusername //上边这行两处都要改成你自己的用户名,这个是改目录所有权的
接下来,你就可以退出然后用你原来的用户登录了,这时候再去挂载的目录看看,已经可写。别忘了删除那个临时用户:
sudo userdel -r tempuser
终于,可以配置 netatalk 了,在移动硬盘上创建两个目录,一个用于存放文件,另一个用于备份。然后编辑
/etc/netatak/AppleVolumes.default,在文件最末尾写:
# The line below sets some DEFAULT, starting with Netatalk 2.1. :DEFAULT: options:upriv,usedots /media/DataCenter/TimeMachine "TimeMachine" options:tm /media/DataCenter/NAS "NAS" # By default all users have access to their home directories. #~/ "Home Directory"
重点就是第三行末尾的
options:tm标记这一句让对应的目录对 TimeMachine 可见。
最后,我们重启对应的服务:
sudo service netatalk restart sudo service avahi-daemon restart
搞好了服务器,我们的电脑也要进行一些配置:
在终端中执行这条命令让tm发现网络备份位置:
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
这下你就应该已经能够在 tm 配置中发现你的网络位置了!
选择它,输入密码连接后,备份开始。
整个过程其实挺繁琐,主要是踩了一大堆可能别人一辈子也遇不到的坑……
机器性能很好,网络我的局域网是千兆交换所以速度峰值在 260M/s 上,当然不那么稳定,我没有用过正牌的大胶囊所以也不知道是不少都这样,但至少能用了。
至于温度,z83 摸起来还是一如既往的微微温热,cpu消耗也不大:
整体价格 600 元人民币,移动硬盘盒以及硬盘我自备了。
后续我想的就是把这个机器的 wifi 模块驱动起来(是的默认没有wifi的驱动,因为我自己不用所以就没提起……)然后做个 5 G的ap也不错的说……
然后就是跑个 smb 给室友,这样发送文件什么的就会很方便……
如果我做了,会立即更新在这里。
暂时就这么多了吧——大家早安。