AFP Netatalk 分享配置 (又名 Apple Time Machine).

(本文译自本站英文版)

Netatalk 是一个开源软件包,它可以将运行 *NIX 的电脑变成用于 Macintosh 电脑的高性能且可靠的文件服务器。相较于通过 SaMBa/NFS 来访问服务器,使用 Netatalk 提供的 AFP 3.3 兼容文件服务器带来了显著提高的传输速度,同时,也为客户端提供了最好的用户体验(完整支持 Macintosh metadata, 完美支持老式的 Mac OSOS 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 有用的功能,像是 Spotlight 搜索,Zeroconfig, ACLLDAP 支持都被关闭了。这或许是一个聪明的决定,因为它使得 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/

当前的 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 配置文件 /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

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 并成为组 usersusername 的成员。

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

FIXME 我不确定本节的内容是否必须。

默认的 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

在 Mac 上设置 Time Machine 是一个非常简单的过程:

  • 打开 系统偏好设置 > Time Machine > 选择备份磁盘。
  • 选择 “Backups on LEDE”(加密备份也可以工作)。
  • 使用你的用户名和密码登录(即本指南之前的内容中设置的用户名和密码)

Apple 会比我更好得说明如何使用 Time Machine, 所以我就不多说了。如果你成功完成了本指南大概也就不需要帮助了。https://support.apple.com/en-us/HT201250

:!: 取决于你的存储需要,初次备份可以需要花费数个小时。

如果你有任何问题,请发到 LEDE 项目论坛,这样我本人和其他人才能回复。 https://forum.lede-project.org

如果你有更好的方法来完成,请更新这篇用户指南,或者帮忙修正排版和错误。:-)

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2018/08/08 07:50
  • by tmomas