雲上開發之數據備份

2020年7月份時,Github 掛了。是的,你沒有聽錯,背靠微軟,坐擁 azure 的 Github 掛了。最近還看到近幾年大火的 Docker 也開始限制 Docker 商業版及 Docker 的其它服務(像Docker Hub)對特定國家和公司的使用。這些都體現了數據備份的重要性,雖然上面的事件對咱們小小我的影響不是很大,但覆巢之下,安有完卵。早點掌握數據備份的方法才能從容應對將來突發的「意外」。本文將介紹在 ECS 上搭建類 Github 服務 Gogs, 而且按期備份 ECS 上數據到 OSS上,有條件的能夠再將 OSS上的數據備份到本身的羣輝 NAS 上。html

介紹

「All in Cloud」的時代已經到來。對於公司而言,維護機房的成本過高,因此購買像阿里這樣的雲服務器就比較靈活且成本可控;而對於我的而言,擁有一臺雲服務器(能夠是阿里雲,也能夠是自搭的服務器【帶公網IP】),在任何機器,任何環境下都擁有同一套本身折騰的環境那也太方便了。下面就來介紹在雲上進行開發中數據備份的那點事。git

Gogs搭建

爲何要搭建 Gogs,由於 Github 也會掛,並且任何人也沒法保證它不會受某國的貿易管制影響。
Gogs 是一款極易搭建的 Git 服務,核心功能和 Github,Gitlab同樣,但比兩者更加輕量級。項目使用的 MIT 受權協議,能夠無任何條件的無償使用。它有以下優勢:github

  1. 易安裝 二進制包安裝,同時支持Docker
  2. 跨平臺 Go開發,支持全平臺
  3. 輕量級 廉價的樹莓派便可支持它的運行(2核512M)

這裏使用 Docker 對其進行安裝部署,docker-compose.yml文件以下:docker

version: '3'

services:
  gogs:
    image: gogs/gogs
    ports:
      - 10022:22
      - 10080:3000
    volumes:
      - ./data/:/data

經過下方命令啓動服務:數據庫

docker stack deploy -c docker-compose.yml gogs

這樣基本就搭建好一個初步的 Git 服務了,經過 IP:10080 就能夠訪問。固然第一次登錄須要進行一些設置。這裏能夠選擇 SQLite 做爲存儲數據庫,在服務器起來後,其容器的內存才 47M ,而單獨啓動一個 MySql 容器,其內存佔到 371M。這已經足夠證實 Gogs 的輕量級。bash

雲機器備份到OSS

當咱們將不少的代碼以及服務放在雲上進行運行時,若是服務器被黑或者不當心誤刪了數據,此時備份數據可讓咱們下降損失。服務器數據備份的方法有不少種,好比服務器

  1. 人工按期從服務器上拷貝文件,問題是人工成本大,不必定記得住。
  2. 本身服務器經過crontab啓定時任務,經過rsync或者scp進行文件備份,前提是你得有臺本身服務器
  3. 經過羣輝 Nas 中 Cloud Sync 進行按期備份,前提是你得有羣輝Nas,且 Cloud Sync只支持OSS。

其實第二種是最理想的狀況,本身整個樹莓派,定時同步備份,方便快捷。這裏介紹一下第三種方式。前提是你得開通OSS服務,而且建立了Bucket爲ws-bakup以及OSS的accessKey(myAccessKeyID:myAccessKeySecret)。微信

OSS工具安裝

# 獲取二進制ossutil64文件,並置於/usr/bin/目錄下
wget http://gosspublic.alicdn.com/ossutil/1.6.18/ossutil64 -O /usr/local/bin/ossutil64
# 給二進制文件添加執行權限
chmod 755 /usr/local/bin/ossutil64
# 配置ossutil64
ossutil64 config

使用默認的配置文件位置 ~/.ossutilconfig工具

[Credentials]
language=CH
endpoint=https://oss-cn-shanghai-internal.aliyuncs.com
accessKeyID=myAccessKeyID
accessKeySecret=myAccessKeySecret

crontab配置

腳本阿里雲

#! /bin/bash

day=`date  +"%Y%m%d"`
tarname='ali-ws'
echo "ecs_backup_oss: "${day}

# 打包壓縮
tar -czvPf /var/backups/ws/${tarname}-${day}.tar.gz \
    /path/to/gogs \
    > /dev/null

# 備份上傳
cp /var/backups/ws/${tarname}-${day}.tar.gz /var/backups/ws/${tarname}.tar.gz
ossutil64 -f cp /var/backups/ws/${tarname}.tar.gz oss://ws-bakup

# 清理以前的打包文件
find /var/backups/ws/ -mtime +4 -name "*.tar.gz" -exec rm -rf {} \;
# 天天凌晨一點備份數據到OSS
0 1 * * * sh /root/cron/ws_bakup.sh >> /var/backups/ws/cron.log

OSS備份到Nas

操做流程以下:

  1. 登錄羣輝Nas,打開 Cloud Sync
  2. 選擇雲供應商:阿里雲對象存儲
  3. 填寫myAccessKeyID和myAccessKeySecret,並選擇要備份的Bucket:ws-bakup
  4. 基本配置完成,還能夠修改計劃(相似crontab)

這樣整個雲上開發的數據備份流程就整完了。

參考文獻

  1. 阿里雲ECS數據遷移至OSS
  2. Gogs中文文檔
  3. Gogs源碼

若是該文章對您產生了幫助,或者您對技術文章感興趣,能夠關注微信公衆號: 技術茶話會, 可以第一時間收到相關的技術文章,謝謝!
技術茶話會
本篇文章由一文多發平臺ArtiPub自動發佈

相關文章
相關標籤/搜索