终于换了一个相对稳定的工作环境,现在,我的桌面是这样的:
好了,总之,用移动硬盘定期备份不是长久之计,所以,身为穷逼,我们要给自己寻找一个合适、方便的备份方案了。
俗话说的好:
那么,我们就来说说我的设计方案。
设计
首先,作为一个穷逼,设计备份方案的第一要素是经济……?♂️知乎里流行的什么 J1900 之流太贵了,思前想后还是pass掉了,毕竟,我只做备份,不做那么多共享——用不到。
J1900 成品工控 淘宝基本价格在 999左右,我自备了1T的移动硬盘,这个价格有点难以接受。
最后,我找到了一个不在中国上市的产品:BeeLink 的 z83 II !当然,从淘宝购买还会更便宜一些,很实惠。
简单说下配置:
- 一个网口——千兆;
- wifi 5G 2.4G 都支持;
- 一个 usb 3 两个 usb 2;
- hdmi 和 sd卡;
- 双核4线程 1.9GHz。
嗯,捡到宝了。
——别忘了,这是成品机器不是主板!
架构
好了,接下来就是软件了,本来我想用 freenas 的,不过真机到手后确实无法引导,会 gaint lock ,似乎是 freebsd 的什么坑,总之,使用 ubuntu 16.04 完美启动。
所以,用的也就是常见的 ubuntu 系列架构了:
- 使用 Netatalk 作为 tm 服务器;
- 使用 Avahi 广播。
动手做
首先,把盒子刷成 Ubuntu 这个就不说了,更新后我们安装 Netatalk 和 Avahi:
1 2 |
apt install netatalk apt install avahi-daemon |
创建文件 /etc/avahi/services/afpd.service 来配置 avahi,写入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 |
<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+
挂载 HFS+
首先,你要在系统中安装插件 apt install hfsprogs ,然后使用命令来看系统是否支持 modprobe hfsplus ,一般来说,这个命令不会有任何反应的,如果你这样,那就悲剧了,比如我:
1 |
modprobe: FATAL: Module hfsplus not found in directory /lib/modules/xxxx |
这是说你的内核是精简编译的,你需要打官方补丁。使用命令:
1 |
sudo apt-get install linux-image-extra-$(uname -r) |
如果你的结果是找不到,那说明你用的是定制过的内核,那就需要你自己来找了,使用命令来搜索可用的包: apt search linux-image-extra-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
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 来查看你的硬盘位置,比如我的是这样的:
1 2 3 4 |
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 |
这里找到那个最大的分区就对了!
使用命令挂载:
1 2 |
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:
1 2 3 |
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 重新登录。登录之后继续:
1 |
sudo usermod --uid 501 yourusername //改你刚才用户的uid |
这时候你可能会收到提示说还有进程在占用,不能改。这很好办,根据提示的pid,干掉那个进程即可: sudo kill <pid> 然后重复执行上面的命令,没关系,有多少个占用就干多少个……
1 2 |
sudo chown -R 501:yourusername /home/yourusername //上边这行两处都要改成你自己的用户名,这个是改目录所有权的 |
接下来,你就可以退出然后用你原来的用户登录了,这时候再去挂载的目录看看,已经可写。别忘了删除那个临时用户: sudo userdel -r tempuser
配置 Netatalk
终于,可以配置 netatalk 了,在移动硬盘上创建两个目录,一个用于存放文件,另一个用于备份。然后编辑 /etc/netatalk/AppleVolumes.default ,在文件最末尾写:
1 2 3 4 5 6 |
# 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 可见。
最后,我们重启对应的服务:
1 2 |
sudo service netatalk restart sudo service avahi-daemon restart |
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 |
编辑配置文件: vim /etc/samba/smb.conf ,在末尾追加如下内容:
1 2 3 4 5 6 7 8 9 10 |
[share] path = /home/share browseable = yes writable = yes comment = smb share test public = no //避免匿名登录 |
然后为 samba 创建一个用户,这个用户必须是已经存在的用户:
1 |
sudo smbpasswd -a smbuser |
创建的密码就是你要登录 samba 的密码,别记错了。最后重启服务:
1 |
sudo service smbd restart |
这样mac 和 win 就都能访问同一个目录了。
结论
整个过程其实挺繁琐,主要是踩了一大堆可能别人一辈子也遇不到的坑……
机器性能很好,网络我的局域网是千兆交换所以速度峰值在 60M/s 上,当然不那么稳定,我没有用过正牌的大胶囊所以也不知道是不少都这样,但至少能用了。
至于温度,z83 摸起来还是一如既往的微微温热,cpu消耗也不大:
整体价格 600 元人民币,移动硬盘盒以及硬盘我自备了。
后续我想的就是把这个机器的 wifi 模块驱动起来(是的默认没有wifi的驱动,因为我自己不用所以就没提起……)然后做个 5 G的ap也不错的说……
然后就是跑个 smb 给室友,这样发送文件什么的就会很方便……
如果我做了,会立即更新在这里。
暂时就这么多了吧——大家早安。
本文由 落格博客 原创撰写:落格博客 » 方便快捷 自用 搭建 TimeMachine 方案
转载请保留出处和原文链接:https://www.logcg.com/archives/2653.html
用移动硬盘定期备份不是长久之计,那把移动硬盘长期插到电脑上不就好了嘛?
是可以的,但麻烦的地方是mac会在空闲时期休眠磁盘,当下一次备份开始的时候再读,这样启动的时候会有一个等待的时间,最痛苦的地方在于——————会整体卡顿一秒!!!!
那个,直接把硬盘插到 Mac 上不就好了??
是可以的,但麻烦的地方是mac会在空闲时期休眠磁盘,当下一次备份开始的时候再读,这样启动的时候会有一个等待的时间,最痛苦的地方在于——————会整体卡顿一秒!!!!