不管是預防資料的遺失跟毀損,或是要更換作業環境到另一台電腦去,都不是一件簡單的事,一方面擔心資料是否真的都有備份成功,另一方面更會擔心屆時真的還原的回來嗎???
Apple 早就聽到了使用者的心聲,在 OS X 10.5 就開始內建了 Time Machine 的功能,系統會自動的在背景備份所有檔案,更包括了作業系統、應用程式、個人設定 ...等等使用者難以手動備份的檔案,讓我們在需要還原的時候可以自行選擇特定時間點的資料進行還原。
要使用 Time Machine 的功能,必須有額外的磁碟空間可供使用,常見的方式有下列幾種:
- 電腦裡非系統碟的其他硬碟。
- 外接設備,如 USB、Thunderbolt、Firewire 1394、SD 記憶卡。
- AirPort Time Capsule。
- NAS,如 Synology、QNAP。
所以倒不如利用手邊現成的 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回復檔案超簡單 這篇文章,裡面有實際影片操作說明。
系列文章
- 用「仿 AirPort Time Capsule」讓 OS X 執行 Time Machine 來備份
- 限制「仿 AirPort Time Capsule」的硬碟空間用量
- 「仿 AirPort Time Capsule」無法備份的異常排除
參考資料
更新紀錄
- 2014/10/16 撰文。
0 意見 :
張貼留言