2014年2月9日 星期日

用 rsync 指令,無痛又輕鬆的備份

2014-02-09 貼出
本文文字部份版權沒有。圖片個別取自 Openclipart,也是公共財,經過阿原編輯後的圖片也是版權沒有。


前言一:
經常聽到親朋好友的電腦出狀況,或是研究生口試前電腦被偷了,都是欲哭無淚的"冏",所以高手們經常勸大家要進行備份。就阿原來說,隨著寶寶的出生,家庭照片與影片的呈指數般的增加,阿原除了把筆電的硬碟換成大容量。也因為阿原愈來愈擔心,萬一筆電被偷、掉到海裡、被卡車碾碎、硬碟突然掛掉等,若沒有適當的備份,將是個生不如死的悲劇。

這說明備份的工作的重要 (無論您是用哪個作業系統)。現在阿原來分享使用 rsync 進行無痛神奇備份。
 
前言二:
雖然阿原號稱從 2006-02 就改用 Linux,但是到現在程度還是停留在入門階段。過去進行備份,就用土法煉鋼法,複製檔案到外接硬碟。若有更新,則砍掉外接碟上的舊資料,重新備份,或是人工比對,進行新檔案的備份 (現在看來真是不聰明)。
阿原最近買了 NAS,知道可以 rsync 一個指令可以備份,柰何柰何技術不夠,反倒先學會了使用 rsync 指令,把筆電的資料備份到外接碟 (這麼基礎的指令現在才學會,還敢公開告訴別人阿原改用 Linux 已經八年了,真是不要 Lian)

 
rsync 之神奇功效 (阿原的觀點,不代表 rsync 所有的功能)

1. 一道指令就可以備份所有的資料 (有關子目錄的觀念與管理)(第一次備份比較花時間,例如阿原 300 多 Gb 的資料,需要三小時多)

2. 首次備份後,再次備份時,可以自動比對新增、改名、刪除的檔案。

a. 可以選擇外接硬碟的備份內容跟目前筆電被進行備份的內容一模一樣

b. 若擔心,也可以選擇除了加上新增及改名後的檔案,但是不刪除在筆電上已經刪除的檔案,或是改名前的檔案 (因為改完檔名,筆電上沒有那樣的檔案,但是前一次的備份有),讓資料留在前一次備份的狀態。

3. 若換主機的硬碟或是新的筆電,一道指令就可以從外接碟的資料,還原到新的筆電 (或主機新硬碟),而且可以選擇保留新筆電上的檔案。


免責聲明:
下列分享的方法不見得是最好的方法,阿原還在學習中,有問題請找 Linux 高手諮詢,若按照阿原的作法出了問題,與阿原無關,特此聲明。

此外,圖形解說文字遵守論文的圖上表下的模式,在將說明文字置於圖形下方。



Figure 1 備份示意圖






Figure 2 找出路徑 (以 ezgo11, KDE 介面為例子說明)

開始之前,先接上外接碟,找出外接碟目標子目錄的路徑。
A. 插上外接硬碟,會看到 Seagate_3TB (名稱是在硬碟格式化的時候自己取的,讀者們可以命名 300 TB 或是 3000000000000000 TB 也可以)

B. 進入外接碟之後,建立自己想要的子目錄按下右鍵,選擇屬性,就會出現小視窗

C. 這是阿原要的路徑 /media/username/Seagate_3TB/20140208_rsync_OD


說明:若讀者自行購買外接碟,需要 format 成 EXT4 的檔案格式,會有 5%的安全空間無法使用,若要使用,請參考阿原的另一篇文章
2013-04-14 硬碟或是隨身碟 format 為 EXT4 格式,解決安全保留容量 5% 的方法




Figure 3 首次從筆電備份到外接碟

指令 (不需要 sudo):
rsync -av /home/username/ /media/username/Seagate_3TB/20140208_rsync_OD
其中 ...username/{請空一格}/media...
(請注意,大小寫、底線等不要弄錯,否則無法複製)

說明 1:把 我的使用者 username 下方的 *.*  (所以用 username/) 複製到外接碟的適當位置

說明 2:這樣會連同使用者下方的軟體預設資料,例如 Firefox, OpenOfffice, virtualbox還有資源回收筒的檔案,等資料都一同複製到外接碟。

若不想這樣,可以管理一下子目錄,例如把所有的資料都放在 /home/username/Desktop
就不會動到隱藏的設定檔,不過這沒有那麼嚴重。

阿原發現,一般 /home/username 下的隱藏檔 (套件設定檔) 不到 500 Mb,但是阿原的家目錄隱藏檔有 12 Gb,可能是 virtualbox 的作業系統檔、dropbox 離線檔、刪除的檔案。


備份所需的時間:
以阿原的硬體來說,雖然外接碟是 USB 3.0,但是筆電是 USB 2.0,實際首次備份結束出現的訊息如下:

sent 316318906478 bytes  received 4662165 bytes  25433050.75 bytes/sec
total size is 316340664882  speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]


也就是 316 GB 的資料,在 25433050.75 bytes/sec  傳輸速度下,用了  12437 sec = 207 min,送出指令後去睡覺,醒來就完成了。但是有 error,我得想想如何找出來 (過去的經驗是 pdf 的論文檔名太長)

這是 3.5 吋的硬碟,下次可以試試 2.5 的硬碟,不曉得傳輸速度是否比較慢?








Figure 3 後續的備份 (若要維持跟筆電被備份的內容完全一樣)
指令:
rsync -av --delete /home/username/ /media/username/Seagate_3TB/20140208_rsync_OD


關鍵是加上參數 --delete







Figure 4

rsync -av --delete --backup /home/username/ /media/username/Seagate_3TB/20140208_rsync_OD

增加新檔案,保留更名前或是刪除前的檔案。(既然是備份,資料優先,比較不考慮外接碟的容量,所以可以用這方法)

關鍵是加上參數 --backup


但是阿原想到,若是要從外接硬碟還原到新買的筆電,可能會留下很多不必要的檔案,所以該怎麼做,就看大家。例如沒有出意外,就直接拿舊筆電的資料轉移到新筆電。若是筆電遺失,只好回到備份碟,轉移到新筆電,同時會有很多的被刪除會改名前的備份檔。

或者阿原有五個外接備份碟,要更換到新的筆電前,可以找一個,使用全備份,再移到新的筆電。

請注意:
若是連同 /home/usernane 下的隱藏檔,經常是軟體設定檔,也複製到外接碟,在移到新的筆電時,要注意覆蓋現有軟體的設定問題!


其實 rsync 還有很多參數及功能,需要的讀者可以自行研究!



補充說明:
sent 32500450479 bytes  received 209831 bytes  26305674.07 bytes/sec
total size is 336379915563  speedup is 10.35
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]




20130328 補充說明

若不想複製隱藏的檔案或子目錄,可以使用參數 --exclude

經過阿原多次測試,發現下列的使用法,可以不複製家目錄下的隱藏檔 (例如軟體設定檔)

rsync -avxP --delete --exclude=".*/" /home/user/ /media/Seagate_3TB/20140328_rsync_OD

但是不確定會不會漏掉重要的隱藏檔??    此外,若 Office 有設定備份




參考資料:
rsync 取代 cp , 有進度狀態, 又可保留權限

使用 rsync 實做重複資料刪除技術



圖片資料來源: OpneClipart。雖然公共財 (public domain),理論是不需要寫出作者,但為尊重與感謝,阿原仍列出圖片的來源網址,以方便大家使用。
桌機
http://openclipart.org/detail/169398/computer-station-by-ilnanny
筆電
http://openclipart.org/detail/5012/laptop-by-metalmarious
硬碟
http://openclipart.org/detail/131323/hard-disk-by-ricardomaia-131323

下載圖片的 PNG 檔,經過 OpenOffice Draw (on ezgo11) 編輯後匯出成 png 檔,上傳到本部落格。