備份工具 Bup === 筆者最近在整理檔案的時候誤刪了 5GB 左右的複數專案的資料`(つд⊂)` ,雖然大部資料都還有備份,不過大約 2~7 個工作天的產出就這樣蒸發了。筆者對於專案已經開始使用版本控制,不過對於一般的硬碟資料備份仍採用完全備份,於是藉著這次搞丟資料的機會,我認為該是好好面對自己的備份問題了。 一開始找到的是使用 `tar` 進行增量備份,是非常經典的手法,不過實做了幾次的體驗讓我不是很滿意,於是又再找找其他備份工具,發現 bup 這個備份工具使用與 git 相同的技術來儲存檔案的,因為有幾分親近感於是便試著用用看了。在此之前沒有使用過其他備份工具,於是這一用直接打開新世界的大門令筆者大吃一驚。`Σ(;゚д゚)` ## 簡介 bup 是一個用 Python 寫的備份程式,其名稱是 "backup" 的縮寫。基於 git packfile 檔案格式, bup 提供了一個高效的方式來備份一個系統,提供快速的增量備份和全域性去重(在檔案中或檔案裡,甚至包括虛擬機器映象)。bup 在 LGPL 版本 2 協議下發行。[^introduction] 其特點包括[^introduction]: - 全域性去重 (在檔案之間或檔案內部,甚至包括虛擬機器映象) - 使用一個滾動的校驗和演算法(類似於 rsync) 來將大檔案分為多個數據塊 - 使用來自 git 的 packfile 檔案格式 - 直接寫入 packfile 檔案,以此提供快速的增量備份 - 可以使用 "par2" 冗餘來恢復衝突的備份 - 可以作為一個 FUSE 檔案系統來掛載你的 bup 倉庫 ## 安裝 ~~我就懶~~ `_(¦3 ⌒゙)_` ```shell sudo apt install bup ``` 如果要自行從原始碼編譯,請見其github頁面[^git-bup]。 ## 使用 ### 建立一個庫 預設會放在 `~/.bup` ,如果要設定其他位置記得用絕對路徑設定 `BUP_DIR`: ```shell export BUP_DIR=/media/user/my-drive/.bup bup init ``` ### 備份資料 備份資料這個行為在 bup 被差成兩個步驟: 1. index(建立索引) 2. save(儲存) 拆成兩個步驟的原因在 `bup-index` 的 `man` 有比較詳細的解釋,本文就不在這方面著墨了。[^two-step] 首先根據要備份的檔案或路徑進行索引,如果檔案很多的會花上一點時間,以下我以備份 `Desktop` 資料夾為例: ```shell bup index '/home/user/Destop' ``` 接著正式進行備份: ```shell bup save -v \ --strip-path='/home/user' \ --name master-desktop \ '/home/user/Destop' ``` `--name` 參數是備份分支(branch)的名稱,如果有使用 `git` 的經驗應該不難理解。 `-v` 參數會將處理到的資料夾顯示出來,`-v -v` 則是處理到的檔案都會顯示。 `--strip-path` 參數用於消除絕對路徑前輟,預設情況備份會把資料所在的絕對路徑也紀錄下來,也就是如果備份的資料在距離根目錄很遙遠的地方,到時候從庫抽出資料的指令會變得很長,如:`branch/latest/home/user/Downloads/some/folder/you/placed` ### 取出資料 ```shell bup restore -v -C '/home/user/Destop.bak' \ 'master-desktop/latest/Destop' ``` `-C` 用於指定輸出路徑,還記得我提到 bup 預設會紀錄備份的路徑嗎?取出資料也是如此,預設會直接把資料放到當時紀錄的路徑去,如果要指定路徑的話記得使用這個參數。感覺這個設計就是為了方便直接備份工作環境的資料呢。`(ㅍ◡ㅍ)` ### 其他 工具還自帶了一些方便的功能,比如: ```shell mkdir /tmp/buptest sudo bup fuse -d /tmp/buptest ``` 能夠將庫的內容模擬成檔案系統並掛載到指定路徑,如此一來我們就能像是操作檔案系統一般的訪問庫裡面的資料,甚至能用有 GUI 的 filemanager 來瀏覽資料,當然過程免不了會有解壓縮消耗時間造成的載入延遲。 或是 `bup web` 指令直接建立網頁服務,可以直接透過網頁瀏覽器索引庫裡面的內容並下載。其實 bup 的 man 裡面就放了不少指令的範例,要更深入了解的話就請直接翻閱手冊囉~[^man] 因為我有不少不符合預設值的操作,因此需要透過指令來下達參數,不果如果使用目的符合工具本身的設計的使用情境,可以透過 bups 之類的視窗程式來調用 bup 喔。[^bups] [^introduction]: 使用這些去重加密工具來備份你的資料_Linux中國 - 微文庫. (n.d.). Retrieved 2020-07-15, from https://www.luoow.com/dc_tw/109450183 [^git-bup]: Retrieved 2020-07-15, from https://github.com/bup/bup [^two-step]: Ubuntu Manpage: bup-index - print and/or update the bup filesystem index. Retrieved 2020-07-15, from http://manpages.ubuntu.com/manpages/focal/en/man1/bup-index.1.html#description [^man]: Ubuntu Manpage: bup - Backup program using rolling checksums and git file formats. Retrieved 2020-07-15, from http://manpages.ubuntu.com/manpages/focal/en/man1/bup.1.html [^bups]: emersion/bups: Simple GUI for Bup, a very efficient backup system. Retrieved 2020-07-15, from https://github.com/emersion/bups ###### tags: `learning note` `bup` `2020-07-14`