如何使用 BorgBackup、Rclone 和 Wasabi 雲端儲存推出自己的家庭備份解決方案
使用基於開源軟體和廉價雲端儲存的自動備份解決方案來保護你的資料。
幾年來,我用 CrashPlan 來備份我家的電腦,包括屬於我妻子和兄弟姐妹的電腦。CrashPlan 本質上是“永遠線上”,不需要為它操心就可以做的規律性的備份,這真是太棒了。此外,能使用時間點恢復的能力多次派上用場。因為我通常是家庭的 IT 人員,所以我對其使用者介面非常容易使用感到高興,家人可以在沒有我幫助的情況下恢復他們的資料。
最近 CrashPlan 宣佈,它正在放棄其消費者訂閱,專注於其企業客戶。我想,這是有道理的,因為它不能從像我這樣的人賺到很多錢,而我們的家庭計劃在其系統上使用了大量的儲存空間。
我決定,我需要一個合適的替代功能,包括:
- 跨平臺支援 Linux 和 Mac
- 自動化(所以沒有必要記得點選“備份”)
- 時間點恢復(可以關閉),所以如果你不小心刪除了一個檔案,但直到後來才注意到,它仍然可以恢復
- 低成本
- 備份有多份儲存,這樣資料存在於多個地方(即,不僅僅是備份到本地 USB 驅動器上)
- 加密以防備份檔案落入壞人手中
我四處搜尋,問我的朋友有關類似於 CrashPlan 的服務。我對其中一個 Arq 非常滿意,但沒有 Linux 支援意味著對我沒用。Carbonite 與 CrashPlan 類似,但會很昂貴,因為我有多臺機器需要備份。Backblaze 以優惠的價格(每月 5 美金)提供無限備份,但其備份客戶端不支援 Linux。BackupPC 是一個強有力的競爭者,但在我想起它之前,我已經開始測試我的解決方案了。我看到的其它選項都不符合我要的一切。這意味著我必須找出一種方法來複制 CrashPlan 為我和我的家人提供的服務。
我知道在 Linux 系統上備份檔案有很多好的選擇。事實上,我一直在使用 rdiff-backup 至少 10 年了,通常用於本地儲存遠端檔案系統的快照。我希望能夠找到可以去除備份資料中重複部分的工具,因為我知道有些(如音樂庫和照片)會儲存在多臺計算機上。
我認為我所做的工作非常接近實現我的目標。
我的備份解決方案
最終,我的目標落在 BorgBackup、Rclone 和 Wasabi 雲端儲存的組合上,我的決定讓我感到無比快樂。Borg 符合我所有的標準,並有一個非常健康的使用者和貢獻者社群。它提供重複資料刪除和壓縮功能,並且在 PC、Mac 和 Linux 上執行良好。我使用 Rclone 將來自 Borg 主機的備份倉庫同步到 Wasabi 上的 S3 相容儲存。任何與 S3 相容的儲存都可以工作,但是我選擇了 Wasabi,因為它的價格好,而且它的效能超過了亞馬遜的 S3。使用此設定,我可以從本地 Borg 主機或從 Wasabi 恢復檔案。
在我的機器上安裝 Borg 只要 sudo apt install borgbackup
。我的備份主機是一臺連線有 1.5TB USB 驅動器的 Linux 機器。如果你沒有可用的機器,那麼備份主機可以像 Raspberry Pi 一樣輕巧。只要確保所有的客戶端機器都可以透過 SSH 訪問這個伺服器,那麼你就能用了。
在備份主機上,使用以下命令初始化新的備份倉庫:
$ borg init /mnt/backup/repo1
根據你要備份的內容,你可能會選擇在每臺計算機上建立多個倉庫,或者為所有計算機建立一個大型倉庫。由於 Borg 有重複資料刪除功能,如果在多臺計算機上有相同的資料,那麼從所有這些計算機向同一個倉庫傳送備份可能是有意義的。
在 Linux 上安裝 Borg 非常簡單。在 Mac OS X 上,我需要首先安裝 XCode 和 Homebrew。我遵循 how-to 來安裝命令列工具,然後使用 pip3 install borgbackup
。
備份
每臺機器都有一個 backup.sh
指令碼(見下文),由 cron 任務定期啟動。它每天只做一個備份集,但在同一天嘗試幾次也沒有什麼不好的。膝上型電腦每隔兩個小時就會嘗試備份一次,因為不能保證它們在某個特定的時間開啟,但很可能在其中一個時間開啟。這可以透過編寫一個始終執行的守護程式來改進,並在膝上型電腦喚醒時觸發備份嘗試。但現在,我對它的運作方式感到滿意。
我可以跳過 cron 任務,併為每個使用者提供一個相對簡單的方法來使用 BorgWeb 來觸發備份,但是我真的不希望任何人必須記得備份。我傾向於忘記點選那個備份按鈕,直到我急需修復(這時太遲了!)。
我使用的備份指令碼來自 Borg 的快速入門文件,另外我在頂部新增了一些檢查,看 Borg 是否已經在執行,如果之前的備份執行仍在進行這個指令碼就會退出。這個指令碼會建立一個新的備份集,並用主機名和當前日期來標記它。然後用簡單的保留計劃來整理舊的備份集。
這是我的 backup.sh
指令碼:
#!/bin/sh
REPOSITORY=borg@borgserver:/mnt/backup/repo1
#Bail if borg is already running, maybe previous run didn't finish
if pidof -x borg >/dev/null; then
echo "Backup already running"
exit
fi
# Setting this, so you won't be asked for your repository passphrase:
export BORG_PASSPHRASE='thisisnotreallymypassphrase'
# or this to ask an external program to supply the passphrase:
export BORG_PASSCOMMAND='pass show backup'
# Backup all of /home and /var/www except a few
# excluded directories
borg create -v --stats \
$REPOSITORY::'{hostname}-{now:%Y-%m-%d}' \
/home/doc \
--exclude '/home/doc/.cache' \
--exclude '/home/doc/.minikube' \
--exclude '/home/doc/Downloads' \
--exclude '/home/doc/Videos' \
--exclude '/home/doc/Music' \
# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-' prefix is very important to
# limit prune's operation to this machine's archives and not apply to
# other machine's archives also.
borg prune -v --list $REPOSITORY --prefix '{hostname}-' \
--keep-daily=7 --keep-weekly=4 --keep-monthly=6
備份的輸出如下所示:
------------------------------------------------------------------------------
Archive name: x250-2017-10-05
Archive fingerprint: xxxxxxxxxxxxxxxxxxx
Time (start): Thu, 2017-10-05 03:09:03
Time (end): Thu, 2017-10-05 03:12:11
Duration: 3 minutes 8.12 seconds
Number of files: 171150
------------------------------------------------------------------------------
Original size Compressed size Deduplicated size
This archive: 27.75 GB 27.76 GB 323.76 MB
All archives: 3.08 TB 3.08 TB 262.76 GB
Unique chunks Total chunks
Chunk index: 1682989 24007828
------------------------------------------------------------------------------
[...]
Keeping archive: x250-2017-09-17 Sun, 2017-09-17 03:09:02
Pruning archive: x250-2017-09-28 Thu, 2017-09-28 03:09:02
我在將所有的機器備份到主機上後,我遵循安裝預編譯的 Rclone 二進位制檔案指導,並將其設定為訪問我的 Wasabi 帳戶。
此指令碼每天晚上執行以將任何更改同步到備份集:
#!/bin/bash
set -e
repos=( repo1 repo2 repo3 )
#Bail if rclone is already running, maybe previous run didn't finish
if pidof -x rclone >/dev/null; then
echo "Process already running"
exit
fi
for i in "${repos[@]}"
do
#Lets see how much space is used by directory to back up
#if directory is gone, or has gotten small, we will exit
space=`du -s /mnt/backup/$i|awk '{print $1}'`
if (( $space < 34500000 )); then
echo "EXITING - not enough space used in $i"
exit
fi
/usr/bin/rclone -v sync /mnt/backup/$i wasabi:$i >> /home/borg/wasabi-sync.log 2>&1
done
第一次用 Rclone 同步備份集到 Wasabi 花了好幾天,但是我大約有 400GB 的新資料,而且我的出站連線速度不是很快。但是每日的增量是非常小的,能在幾分鐘內完成。
恢復檔案
恢復檔案並不像 CrashPlan 那樣容易,但是相對簡單。最快的方法是從儲存在 Borg 備份伺服器上的備份中恢復。以下是一些用於恢復的示例命令:
#List which backup sets are in the repo
$ borg list borg@borgserver:/mnt/backup/repo1
Remote: Authenticated with partial success.
Enter passphrase for key ssh://borg@borgserver/mnt/backup/repo1:
x250-2017-09-17 Sun, 2017-09-17 03:09:02
#List contents of a backup set
$ borg list borg@borgserver:/mnt/backup/repo1::x250-2017-09-17 | less
#Restore one file from the repo
$ borg extract borg@borgserver:/mnt/backup/repo1::x250-2017-09-17 home/doc/somefile.jpg
#Restore a whole directory
$ borg extract borg@borgserver:/mnt/backup/repo1::x250-2017-09-17 home/doc
如果本地的 Borg 伺服器或擁有所有備份倉庫的 USB 驅動器發生問題,我也可以直接從 Wasabi 直接恢復。如果機器安裝了 Rclone,使用 rclone mount,我可以將遠端儲存倉庫掛載到本地檔案系統:
#Mount the S3 store and run in the background
$ rclone mount wasabi:repo1 /mnt/repo1 &
#List archive contents
$ borg list /mnt/repo1
#Extract a file
$ borg extract /mnt/repo1::x250-2017-09-17 home/doc/somefile.jpg
它工作得怎樣
現在我已經使用了這個備份方法幾個星期了,我可以說我真的很高興。設定所有這些並使其執行當然比安裝 CrashPlan 要複雜得多,但這就是使用你自己的解決方案和使用服務之間的區別。我將不得不密切關注以確保備份繼續執行,資料與 Wasabi 正確同步。
但是,總的來說,以一個非常合理的價格替換 CrashPlan 以提供相似的備份覆蓋率,結果比我預期的要容易一些。如果你看到有待改進的空間,請告訴我。
這最初發表在 Local Conspiracy,並被許可轉載。
作者簡介:
Christopher Aedo - Christopher Aedo 自從大學時開始就一直在用開源軟體工作併為之作出貢獻。最近他在領導一支非常棒的 IBM 上游開發團隊,他們也是開發支持者。當他不在工作或在會議上發言時,他可能在俄勒岡州波特蘭市使用 RaspberryPi 釀造和發酵美味的自制啤酒。
via: https://opensource.com/article/17/10/backing-your-machines-borg
作者:Christopher Aedo 譯者:geekpi 校對:wxy
相關文章
- 杉巖資料企業雲端儲存解決方案
- 開發直播app軟體過程中的雲端儲存和備份APP
- 紅帽推出All-In-One資料中心儲存解決方案
- VMware推出新一代企業儲存解決方案
- 梭子魚備份產品解決方案再次擴充套件儲存容量及效能套件
- 直播平臺軟體開發過程中的雲端儲存和備份
- Jumpshare:推出14天儲存服務 解決短期儲存和分享需求
- 自動備份SQL資料庫到雲端儲存StorageSQL資料庫
- 騰訊雲升級多個雲端儲存解決方案 以智慧化儲存助力企業增長
- 傳統雲端儲存方案相比Filecoin發展前景如何
- 杉巖分散式儲存解決方案分散式
- 分庫解決方案—資料儲存
- Portworx – 您的雲原生容器儲存解決方案
- Jou 的解決方案系列:Sublime Text 3 使用之自動儲存
- 原:Mozy:不錯的線上備份解決方案
- Ubuntu 每日技巧- 自動備份Ubuntu 14.04到Box雲端儲存上Ubuntu
- 杉巖海量資料儲存解決方案
- 杉巖資料安全儲存解決方案
- 監控影片儲存壓縮解決方案
- RMAN備份恢復——備份集儲存位置改變
- innodb儲存引擎備份工具--Xtrabackup儲存引擎
- HPE 3PAR StoreServ儲存,打造更值得信賴的儲存解決方案
- Backup And Recovery User's Guide-備份和恢復介紹-Oracle備份和恢復解決方案GUIIDEOracle
- Verizon和Novell推出基於雲的安全解決方案
- 混合雲端儲存開啟企業上雲新路徑--阿里雲混合雲備份容災方案發布阿里
- 杉巖資料私有云儲存解決方案
- TiDB 冷熱儲存分離解決方案TiDB
- 儲存解決方案DAS、NAS與SAN比較
- iOS全埋點解決方案-資料儲存iOS
- 【MySQL】mysqldump備份失敗與解決方案合集MySql
- 備份ABAP程式碼 (分模組儲存)
- 組裝一臺私人云儲存主機配置推薦 家庭NAS雲端儲存伺服器搭建伺服器
- NFS儲存rman備份時的mount選項NFS
- oracle自動備份,儲存每天備份日誌的指令碼編寫Oracle指令碼
- RAC歸檔儲存方案:交叉互備
- Gartner 魔力象限:企業備份和恢復解決方案 2024
- Backup And Recovery User's Guide-備份和恢復介紹-備份和恢復的目的-資料儲存GUIIDE
- Wipro推出VisionEDGE解決方案