以 FreeBSD 作為 Time Machine 的備份空間

前言

以往使用 Mac Mini Server 磁碟分享作為手邊各項 Mac 裝置的 Time Machine 備份空間;
但近來有其他需求將 Mac Mini 挪用至他處,若添購 Time Capsule 又是一筆額外的開銷,
索性利用前些日子於 FreeBSD 建好的 ZFS storage pool 也作為新的 Mac 備份空間。

然而,網路上找到的教學文章大多基於稍早版本的 Netatalk 並搭配 Mac OS Leopard/Snow Leopard,
隨時間演進有些過時資訊未更新。

本文以 FreeBSD 8/Netatalk 2.2.4/Mac OS Mountain Lion (10.8) 為例,詳述步驟如下…

做法

  1. 以 ports 安裝 Netatalk
  2. cd /usr/ports/net/netatalk/
    make install clean
    
  3. 編輯 /etc/rc.conf
  4. netatalk_enable="YES"
    afpd_enable="YES"
    cnid_metad_enable="YES"
    
  5. 編輯 /usr/local/etc/AppleVolumes.default
  6. /home/share/apple "Time Machine" allow:kmd options:usedots,upriv,tm cnidscheme:dbd
    
    • Time Machine 是備份空間的名稱
    • /home/share/apple 是備份空間的路徑
    • kmd 是使用者名稱

進階功能: 讓前述服務可被 Mac 還原模式搜尋到

雖然以上所提已可與 Mac OS X 合作無間,
但若碰到要做系統還原的時候,還必須搭配 avahi 將服務廣播出去。

  1. 首先以 ports 安裝 avahi,此處只需選擇 avahi-libdns
  2. cd /usr/ports/net/avahi/
    make config install clean
    
  3. 安裝完成後,於 /usr/local/etc/avahi/services 新增 afp.service 檔案:
  4. <?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-group>
    
  5. /etc/rc.conf 加入:
  6. avahi_daemon_enable="YES"
  7. 重新啟動 avahi-daemon:
  8. /usr/local/etc/rc.d/avahi-daemon restart

Note

本篇做法與前人分享的差異在於:

  1. 新版 Netatalk 須在 rc.conf 加入 cnid_metad_enable 設定
  2. 新版 Mac OS X 已無需調整於系統設定調整 TMShowUnsupportedNetworkVolumes 選項
  3. 新版做法使用者無需手動以磁碟工具建立磁碟映像檔 (sparse bundle disk image),也免去以往需事先準備來源主機的 mac address 及 hostname 等資訊。

References

  1. Netatalk 2.2 Manual

Leave a Reply

Your email address will not be published.