為什么選擇 restic,主要基于以下幾點考慮:
- rclone sync 只支持本地向遠程無條件的同步,遠程的永遠會被覆蓋
- Brog是純 C 開發(fā)的,只在*nix系統(tǒng)下運行,而 restic 可以在任何 CPU架構(gòu),任何系統(tǒng)上運行,因為是由 go 開發(fā)的,運行效率接近于 C 。
- rsync 對于新手并不友好,而且只有 *nix 版本,雖然也有 windows 版本,但似乎不是官方出品。
首先,創(chuàng)建一個備份倉庫,如果結(jié)合 rclone 使用,可以指定一個掛在為遠程服務器的位置,沒有的話,可以使用本地路徑作為備份倉庫。
restic init --repo ./backup
執(zhí)行此命令后,會讓你輸入備份倉庫密碼,注意如它所說,記住此密碼不要丟失。這個命令的執(zhí)行可能需要等待1分鐘左右,對于 NFS 文件系統(tǒng),可能需要的時間更長,等就是了。
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.
添加一個本地文件夾到備份倉庫,你也可以繼續(xù)添加其它的文件夾。
restic --repo ./backup backup ./mywork
同樣,對于訪問備份倉庫,需要密碼訪問,然后這個過程也會比較長,因為都是基于文件哈希值作為備份版本的依據(jù),此時命令會提示:
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
ID Date Host Tags Directory
----------------------------------------------------------------------
8c4b2b4a 2018-10-15 16:59:48 DELL-PC E:\Temps\mywork
----------------------------------------------------------------------
1 snapshots
在以上的表格中,ID 就是備份的版本號,Date 是備份快照創(chuàng)建日期, HOST 是備份客戶端的主機名,Tags 是標簽,在我們這個演示中沒有用到,Directory 是客戶端原始備份目錄,這是因為它可以支持多個客戶端,多個倉庫的備份, restic 更像是一個集中式的版本備份系統(tǒng)。
接下來是如何還原一個備份,十分簡單,指定 restore 哪一個版本號,以及 target 指向一個恢復路徑,就會完成備份的還原。
restic -r ./backup restore 8c4b2b4a --target ./mywork_restore