最強大跨平臺備份工具 Restic 的使用
為什麼選擇 restic,主要基於以下幾點考慮:
- rclone sync 只支援本地向遠端無條件的同步,遠端的永遠會被覆蓋
- Brog是純 C 開發的,只在*nix系統下執行,而 restic 可以在任何 CPU架構,任何系統上執行,因為是由 go 開發的,執行效率接近於 C 。
- rsync 對於新手並不友好,而且只有 *nix 版本,雖然也有 windows 版本,但似乎不是官方出品。
首先,建立一個備份倉庫,如果結合 rclone 使用,可以指定一個掛在為遠端伺服器的位置,沒有的話,可以使用本地路徑作為備份倉庫。
restic init --repo ./backup
執行此命令後,會讓你輸入備份倉庫密碼,注意如它所說,記住此密碼不要丟失。這個命令的執行可能需要等待1分鐘左右,對於 NFS 檔案系統,可能需要的時間更長,等就是了。
enter password for new repository: enter password again: created restic repository a6801fab57 at ./backup Please note that knowledge of your password is required to access the repository. Losing your password means that your data is irrecoverably lost.
新增一個本地資料夾到備份倉庫,你也可以繼續新增其它的資料夾。
restic --repo ./backup backup ./mywork
同樣,對於訪問備份倉庫,需要密碼訪問,然後這個過程也會比較長,因為都是基於檔案雜湊值作為備份版本的依據,此時命令會提示:
enter password for repository: repository a6801fab opened successfully, password is correct Files:1 new,0 changed,0 unmodified Dirs:0 new,0 changed,0 unmodified Added to the repo: 319 B processed 1 files, 19 B in 0:08 snapshot 8c4b2b4a saved
最後的一行,snapshot 8c4b2b4a saved 中的8位字元就是本次的備份版本號,這和 Git 十分類似,用過的大家都知道,以後無論是刪除備份還是還原備份,都是基於這個版本號。
檢視備份庫中的所有備份快照:
restic -r ./backup snapshots
在恢復備份之前,我們都會檢視一下快照,防止恢復了錯誤的版本,可以使用上面的命令。
enter password for repository: repository a6801fab opened successfully, password is correct IDDateHostTagsDirectory ---------------------------------------------------------------------- 8c4b2b4a2018-10-15 16:59:48DELL-PCE:\Temps\mywork ---------------------------------------------------------------------- 1 snapshots
在以上的表格中,ID 就是備份的版本號,Date 是備份快照建立日期, HOST 是備份客戶端的主機名,Tags 是標籤,在我們這個演示中沒有用到,Directory 是客戶端原始備份目錄,這是因為它可以支援多個客戶端,多個倉庫的備份, restic 更像是一個集中式的版本備份系統。
接下來是如何還原一個備份,十分簡單,指定 restore 哪一個版本號,以及 target 指向一個恢復路徑,就會完成備份的還原。
restic -r ./backup restore 8c4b2b4a --target ./mywork_restore