用「仿 AirPort Time Capsule」讓 OS X 執行 Time Machine 來備份

by 10/16/2014 0 意見

不管是預防資料的遺失跟毀損,或是要更換作業環境到另一台電腦去,都不是一件簡單的事,一方面擔心資料是否真的都有備份成功,另一方面更會擔心屆時真的還原的回來嗎???

Apple 早就聽到了使用者的心聲,在 OS X 10.5 就開始內建了 Time Machine 的功能,系統會自動的在背景備份所有檔案,更包括了作業系統、應用程式、個人設定 ...等等使用者難以手動備份的檔案,讓我們在需要還原的時候可以自行選擇特定時間點的資料進行還原。

要使用 Time Machine 的功能,必須有額外的磁碟空間可供使用,常見的方式有下列幾種:
  • 電腦裡非系統碟的其他硬碟。
  • 外接設備,如 USB、Thunderbolt、Firewire 1394、SD 記憶卡。
  • AirPort Time Capsule。
  • NAS,如 Synology、QNAP。
但是,並不是每一台 Mac 都有兩顆硬碟可供備份,外接設備的速度不一定夠快,AirPort Time Capsule 價格實在不便宜,NAS 則必須要該型號支援 Time Machine 的功能。

所以倒不如利用手邊現成的 Linux Server,來自製「偽 AirPort Time Capsule」吧。

事前準備


使用 CentOS 7 的朋友,請參閱 [CentOS 7] Mac 最強大的後盾,Time Machine 自動備份的實作

這裡使用的作業系統為 CentOS 6.5 x86,由於 CentOS 官方套件庫並未提供所需的相關套件,所以我們必須先加入 Redhat 的 EPEL 套件庫,請參閱 找不到可靠的套件來源嗎?幫 CentOS 加入可靠的第三方的套件庫

進入 EPEL 網站,這邊開門見山的就說 EPEL 是由 Fedora SIG 成員建立、維護並管理,專門提供給 RHEL、CentOS、Scientific Linux 及 Oracle Enterprise Linux 等發行版使用的套件庫。

EPEL 目前提供了 5.x、6.x、7.x 等三個版本的套件庫,CentOS 6.5 要使用 EPEL 必須選擇 The newest version of 'epel-release' for EL6,點選之後會自動從鏡像站台中選擇一個速度最快的。

epel-release-6-8.noarch  的實際連結網址複製下來。

回到 CentOS 裡執行 rpm 指令,直接用剛剛複製下來的連結網址來安裝 EPEL 的套件庫資訊與金鑰。
rpm -Uvh http://mirror01.idc.hinet.net/EPEL/6/i386/epel-release-6-8.noarch.rpm

裝是裝好了,問題是用 rpm 指令進行安裝的話,日後還得自己記得要手動更新。

不過,現在不用這麼麻煩了,直接執行用 yum 指令來安裝就可以了。
yum -y install epel-release

EPEL 安裝好了之後,更新一下套件庫的資訊,之後的更新維護就可以全部交給 yum。
yum clean all

yum -y update


開始安裝


    先安裝 Time Mahcine 所需的相關套件。
    yum -y install netatalk avahi  dbus nss-mdns

    接著,新增 Time Machine 專用的使用者帳號與密碼,這裡使用「tm-user」為自訂的帳號名稱,當然也可以使用現有的 Linux 使用者帳號,不過為了安全考量,千萬不要直接用 root 帳號。
    useradd tm-user
    passwd tm-user


    建立日後要用來儲存 Time Machine 資料的目錄,同時變更目錄的擁有者及擁有群組,讓使用者有權限可以讀寫檔案。
    mkdir -p /backup/time-machine
    chown tm-user:tm-user /backup/time-machine


    安裝完成之後,netatalk 服務有兩個設定檔需要修改,第一個是 afpd.conf。
    vi /etc/netatalk/afpd.conf

    在最後一行,加入下列指令。
    - -transall -uamlist uams_randnum.so,uams_dhx.so,uams_dhx2.so -nosavepassword -advertise_ssh

    第二個是 AppleVolumes.default。
    vi /etc/netatalk/AppleVolumes.default

    在倒數第二行,也就是「# End of File」的前一行,加入下列指令,指定 Time Machine 的目錄、使用者及權限。
    /backup/time-machine "My Time Machine" allow:tm-user options:usedots,upriv,tm dperm:0775 fperm:0660 cnidscheme:dbd

    其中,「/back/time-machine」就是先前我們建立的目錄,「"TimeCapsule"」是顯示在 Time Machine 可用磁碟清單的名稱,「tm-user」則是先前建立的專用帳號,而「options:tm」千萬不能忘,加了這個參數才能被 Time Machine 辨識為可用的磁碟。

    編輯 nsswitch.conf。
    vi /etc/nsswitch.conf

    在最後一行加入下列指令。
    hosts: files mdns4_minimal dns mdns mdns4

    建立 avahi 的 afpd.service 設定檔。
    vi /etc/avahi/services/afpd.service

    加入下列指令。
    <?xml version=”1.0″ standalone=’no’?>
    <!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>

    將 avahi 的 ssh.service 設定檔改名,停止 SSH 支援。
    mv /etc/avahi/services/ssh.service /etc/avahi/services/ssh.service.disabled

    開放防火牆。
    vi /etc/sysconfig/iptables

    在「:OUTPUT ACCEPT [0:0]」的段落加入下列指令,開放 TCP 與 UDP 的 548、5353、5354 三個通訊埠。
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 548 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5353 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5354 -j ACCEPT
    -A INPUT -p udp -m udp --dport 548 -j ACCEPT
    -A INPUT -p udp -m udp --dport 5353 -j ACCEPT
    -A INPUT -p udp -m udp --dport 5354 -j ACCEPT

    最後讓所有的服務於開機時自動啟動。
    chkconfig netatalk on
    chkconfig messagebus on
    chkconfig avahi-daemon on

    並重新啟動所有相關服務,讓所有的設定檔生效。
    service iptables restart
    service avahi-daemon restart
    service messagebus restart
    service netatalk restart


    進行備份


    回到 OS X 10.9,要到「系統偏好設定」裡去設定 Time Machine 功能。


    當我們點選「開啟」,就會顯示目前可用的磁碟清單,下圖中的 exFAT 是 USB 隨身碟,Warehouse 是記憶卡,TimeCapsule 就是剛剛在 CentOS 建立完成的 Time Machine 服務。

    點選「TimeCapsule」後,再點選「使用磁碟」按鈕。

    系統會詢問帳號及密碼,這時候請輸入先前建立的 tm-user 帳號及密碼。

    輸入正確的帳號密碼之後,Time Machine 就會在 120 秒後,開始進行第一次的完整備份。

    最後,通知中心跳出了提示訊息,通知我們備份完成了。

    日後只要 OS X 在可以與 CentOS 連線的狀態下,Time Machine 就會自動幫我們備份了。


    如何還原


    請直接參考 iPhone4.TW - 用Time Machine回復檔案超簡單 這篇文章,裡面有實際影片操作說明。


    系列文章


    參考資料



    更新紀錄

    • 2014/10/16 撰文。

    Heracles Jam,江湖人稱「海公公」

    IT 技術家 - 創站部落客

    一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
    現職 MIS / 業界講師 / 資訊顧問 / 部落客

    0 意見 :

    張貼留言