使用 Dropbox 實作異地備份

這邊是以線上運作中的 web 網站作為目標備份,備份包含運作中、不包含git內的上傳檔案、資料庫資料內容。不包含系統環境、環境設定檔。在講異地備份之前,提一下自己心目中的異地備份服務是從 VPS 廠商出發的:

  1. 如果資料庫是獨立服務,可以把資料庫當成一個獨立伺服器的運作方式,如果不是,則需要定期/手動操作把 sql 檔案轉換出來。
  2. 對於一個獨立伺服器,確定他是否使用額外硬碟。如果是額外硬碟責備份額外硬碟即可。
  3. 廠商提供備份與下載服務。如果沒有下載,應該也能夠提供備份至不同地區的資料中心的服務。
  4. 提供備援(備份且恢復資料)服務。

如果廠商提供異地備援(備份+還原)的功能,這會是好的。需要考慮的有:

  1. 網站使用的狀態,會考慮到需要備份的頻率。
  2. 網站重要性。是否不能斷線?是否有資安問題、金流問題?是否實時有用戶在使用?
  3. 有沒有需要備份可編輯的原始碼?
  4. 能不能正確的抵擋天災、人禍?

這次因為種種原因,以從系統環境的層級著手處理異地備份。

異地備份如果要把檔案下載到電腦上再儲存起來實嫌麻煩,嘗試讓他跟自己常用的服務做雲端傳輸就好。於是我選了使用 Dropbox 做備份,筆記下來。

實作的目標是:備份檔案、資料庫。
使用的服務與環境是:debian 11, dropbox, Dropbox-Uploader, mysql_backup.sh

這邊採用手動單次操作,如果需要用 cront job 動作的話要請配置好一個 script。

手動操作的流程是:

  1. zip 要備份的檔案
  2. 透過 dropbox-uploader 上傳
  3. backup mysql 資料庫們
  4. 透過 dropbox-uploader 上傳

幾個注意事項:

  1. 網站檔案記得先 zip ,要不檔案(尤其是 uploads/ )多到會瘋掉。
  2. 資料庫備份預設會被壓縮成 .sql.gz 。
  3. mysql 備份檔案內不會有對 database 的 use / drop / create 動作,要的話要自己加。
  4. dropbox-uploader 會執行多個會單個操作,其實沒啥影響,都是用同一個 upload 指令。
  5. 如果使用終端機 ssh 進去 server 的話,建議 keep session 操作避免長時間等待不小心離線,我是使用 screen 來實現,這是介紹

再來關於兩個 shell script 的操作說明。

關於 mysql_backup.sh 操作:

請先下載 shell 或是創建以後複製貼上,記得更新權限

chmod +x mysql_backup.sh

設定其中的資料夾位置、帳號密碼,如果 mysql 路徑不一樣的話記得變更 PATH 變數, KEEP_BACKUPS_FOR 他會檢查路徑中舊的檔案來保留/移除,如果是用 cron job 動作的話好用。

這定完成以後執行即可,會有資訊顯示。

./backup_mysql.sh

關於 Dropbox-Uploader 的操作:

首先先下載 script

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

設定權限並且執行他

chmod +x dropbox_uploader.sh
./dropbox_uploader.sh

系統會提示怎麼做,主要幾個步驟:

  1. 請開啟 dropbox developer 創建一個 app ,選擇 App folder 的 type 並且創建好名字。
  2. 創建完之後,在 Permissions 的 tab 中選擇 “files.metadata.read/write” 和 “files.content.read/write” 這四個權限。記得點擊 Submit 送出。
  3. 在 Settings 的 tab 中找到 App key 並且點擊 show 顯示 App secret ,記錄起來。
  4. 回到指令列上,依照要求輸入 key, secret
  5. 接著會跳出 access token 的請求網址,用瀏覽器開啟,會得到一組 token,依照要求把這組 token 輸入進去。
  6. 提示是否確認,輸入確認「y」之後就可以使用了。

可用的指令可參考官網,這邊附上範例和中文翻譯:

基本上會使用到的就是 upload 這個指令而已。

另外,如果資料輸入錯誤,或是手動上傳完畢了不想留資料,除了移除 dropbox 的 app 之外,記得執行刪除設定檔的動作:

rm ~/.dropbox_uploader

以上。

同場加映


已發佈

分類:

作者: