AFP Netatalk 分享配置 (又名 Apple Time Machine).
(本文译自本站英文版)
Netatalk 是一个开源软件包,它可以将运行 *NIX 的电脑变成用于 Macintosh 电脑的高性能且可靠的文件服务器。相较于通过 SaMBa/NFS 来访问服务器,使用 Netatalk 提供的 AFP 3.3 兼容文件服务器带来了显著提高的传输速度,同时,也为客户端提供了最好的用户体验(完整支持 Macintosh metadata, 完美支持老式的 Mac OS 和 OS X 客户端的混合环境)。
这篇指南将引导你通过一系列步骤在 LEDE 设备上安装必要的软件包,设置 linux 用户,来使你的 Mac 可以安全的通过网络连接到你的 Time Machine 服务器。
为了完成本篇指南,你需要先阅读下面两篇文章:
软件包安装
opkg update && opkg install avahi-utils netatalk
可选的软件包安装
这些软件包是可选的,但是建议安装。nano 让文本文件编辑变得超级简单,而 shadow 软件包使用户和组管理变得轻而易举,否则,你必须手动编辑用户、组以及设置密码。这些包的缺点是,它们会占用你宝贵的 root 分区空间。如果你的空间有限,可以考虑使用 extroot.
opkg update && opkg install nano shadow-groupadd shadow-groupmod shadow-useradd shadow-usermod
可用的 Netatalk 功能
许多 Netatalk 有用的功能,像是 Spotlight 搜索,Zeroconfig, ACL 和 LDAP 支持都被关闭了。这或许是一个聪明的决定,因为它使得 Netatalk 更加节省空间,并提供了更广泛的硬件支持。好消息是 Time Machine 支持仍然是可用的。使用这个简单的命令 afpd -V
我们可以看到哪些功能被编译进了 Netatalk.
afpd 3.1.10 - Apple Filing Protocol (AFP) daemon of Netatalk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Please see the file COPYING for further information and details. afpd has been compiled with support for these features: AFP versions: 2.2 3.0 3.1 3.2 3.3 3.4 CNID backends: dbd last tdb Zeroconf support: No TCP wrappers support: No Quota support: No Admin group support: Yes Valid shell checks: No cracklib support: No EA support: ad | sys ACL support: No LDAP support: No D-Bus support: No Spotlight support: No DTrace probes: No afp.conf: /etc/afp.conf extmap.conf: /etc/extmap.conf state directory: /var/netatalk/ afp_signature.conf: /var/netatalk/afp_signature.conf afp_voluuid.conf: /var/netatalk/afp_voluuid.conf UAM search path: /usr/lib/uams// Server messages path: /var/netatalk/msg/
基本文件分享配置 (Time Machine 服务器)
当前的 Netatalk 软件包 (netatalk - 3.1.10-1)
有一点小小的 posix 权限问题。
使用下面的 chmod
命令来解决这个 bug.
chmod 644 /etc/afp.conf chmod 644 /etc/extmap.conf
afp.conf 文件包括了所有的 AFP 功能配置和 AFP 卷定义。让我们通过 nano /etc/afp.conf
来编辑文件,并设置 Time Machine 服务器;我们将在本指南中使用 nano 文本编辑器。Netatalk 有很多很棒,但没有在本教程中提到的功能。确保查看该文档来获取更多 Time Machine 选项以及其他可用的 AFP 用法:http://netatalk.sourceforge.net/3.0/htmldocs/afp.conf.5.html
; ; Netatalk 3.x configuration file ; [Backups] path = /mnt/sdb1/Backups time machine = yes vol size limit = 250000 valid users = @users
Avahi-daemon 配置
默认的 avahi-daemon 配置文件 /etc/avahi/avahi-daemon.conf
可以完美的在 LEDE 17.01.0+ 中工作,不需要更改。
[server] #host-name=LEDE #domain-name=local use-ipv4=yes use-ipv6=yes check-response-ttl=no use-iff-running=no [publish] publish-addresses=yes publish-hinfo=yes publish-workstation=no publish-domain=yes #publish-dns-servers=192.168.1.1 #publish-resolv-conf-dns-servers=yes [reflector] enable-reflector=no reflect-ipv=no [rlimits] #rlimit-as= rlimit-core=0 rlimit-data=4194304 rlimit-fsize=0 rlimit-nofile=30 rlimit-stack=4194304 rlimit-nproc=3
这里可以了解其他配置选项 https://github.com/lathiat/avahi
Zeroconf 声明
Netatalk 的 LEDE 版本没有包含 Zeroconf 支持,所以我们必须手动声明需要的 afpovertcp, device-info, 以及 adisk text-record 属性。我们之前安装了 avahi-daemon (通过 avahi-utils) 就是为了这个目的。让我们用下面的模版创建一个服务文件:nano /etc/avahi/services/afp.service
.
<?xml version="1.0" standalone='no'?><!--*-nxml-*--> <!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> <type>_adisk._tcp</type> <port>9</port> <txt-record>sys=waMa=0,adVF=0x100,adVU=00000000-AAAA-BBBB-CCCC-111111111111</txt-record> <txt-record>dk0=adVN=Backups,adVF=0x81</txt-record> </service> </service-group>
model=TimeCapsule
决定了 macOS Finder 中显示的硬件图标。还有一些可用的选项是:Xserve, PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro, MacPro6,1, TimeCapsule, AppleTV1,1 以及 AirPort.
adVU=00000000-AAAA-BBBB-CCCC-111111111111
必须被改为一个唯一生成的 UUID. 在 LEDE 中,你可以通过输入 cat /proc/sys/kernel/random/uuid
来创建一个 UUID(每次都会生成并显示一个新的 UUID)。
adVN=Backups
必须和共享自 /etc/afp.conf
中的 timemachine = YES
的虚拟宗卷名称相匹配。如果你使用我上面的示例配置,将该项设置为 Backups
即可,无需更改。大多数在线教程使用 “TimeMachine”,然而 “Backups” 更经典,因为使用 macOS Server 或 Time Capsule 时,它是默认名称。不过使用什么确实无伤大雅,只要它们匹配就可以了。
一些有用的链接
https://guidgenerator.com http://www.freeformatter.com/xml-formatter.html http://netatalk.sourceforge.net/wiki/index.php/Bonjour_record_adisk_adVF_values
用户和组管理
在这一节中,为了文件分享的目的,我们将在 LEDE 系统中创建两个新的用户。创建多少随你便,过程都是一样的。同时我们还将完成下面的事情:
- 为新用户创建 home 文件夹
- 创建一个与新用户名字相同的组
- 添加新用户到一个附加的组,叫作 “users”
1. 使用 mkdir /home/
创建一个目录用于存放用户的 home 文件夹。对于大多数 Linux 发行版来说,这是默认的地方。
2. 添加新用户。在我的例子中,anne 和 brian 将被创建。他们将拥有 home 文件夹 /home/username
并成为组 users
和 username
的成员。
useradd --create-home --groups users --user-group anne useradd --create-home --groups users --user-group brian
3. 为新创建的用户设置密码。
passwd anne passwd brian
4. 更改备份目录的权限。你需要在系统挂载的位置创建一个目录作为备份的位置。
cd /mnt/sdb1/ mkdir Backups chmod 775 Backups/ chgrp users Backups/
5. 使用 ls -alF
检查权限变更:
root@LEDE:/mnt/sdb1# ls -alF drwxr-xr-x 5 root root 4096 Apr 25 18:48 ./ drwxr-xr-x 1 root root 224 Apr 25 21:49 ../ drwxrwxr-x 2 root users 4096 Apr 25 21:01 Backups/ drwxr-xr-x 3 root root 4096 Apr 25 18:48 Shared/ drwx------ 2 root root 16384 Apr 25 16:35 lost+found/
因为 Netatalk 配置中的 valid users = @users
选项,users
用户组非常重要。该组中的全部成员都有拥有访问 Time Machine 服务的权限。让我们使用 grep users /etc/group
来检查哪些用户组成了 users
用户组。你应该看到一些类似我的结果的内容。
root@LEDE:~# grep users /etc/group users:x:100:mrengles,anne,brian
当固件升级时保留配置
我不确定本节的内容是否必须。
默认的 LEDE 固件升级程序可能不会备份我们的配置文件。这将是对于我们辛苦工作的极大浪费。
使用 echo
和命令行,将它们添加到位于 /etc/sysupgrade.conf
的自定义备份文件列表中:
echo '/etc/afp.conf ' >> /etc/sysupgrade.conf echo '/etc/avahi/ ' >> /etc/sysupgrade.conf echo '/etc/extmap.conf ' >> /etc/sysupgrade.conf echo '/home/ ' >> /etc/sysupgrade.conf echo '/var/netatalk/ ' >> /etc/sysupgrade.conf
也可以通过 LuCi > 系统 > 备份和升级 > 配置 > 备份文件列表来完成这件事。仅需在最后添加下面的内容:
/etc/afp.conf /etc/avahi/ /etc/extmap.conf /home/ /var/netatalk/
要获得更多信息,请查看 Upgrading LEDE from the Command Line
在 macOS 上设置 Time Machine
在 Mac 上设置 Time Machine 是一个非常简单的过程:
- 打开 系统偏好设置 > Time Machine > 选择备份磁盘。
- 选择 “Backups on LEDE”(加密备份也可以工作)。
- 使用你的用户名和密码登录(即本指南之前的内容中设置的用户名和密码)
Apple 会比我更好得说明如何使用 Time Machine, 所以我就不多说了。如果你成功完成了本指南大概也就不需要帮助了。https://support.apple.com/en-us/HT201250
取决于你的存储需要,初次备份可以需要花费数个小时。
最后的想法
如果你有任何问题,请发到 LEDE 项目论坛,这样我本人和其他人才能回复。 https://forum.lede-project.org
如果你有更好的方法来完成,请更新这篇用户指南,或者帮忙修正排版和错误。