2020年7月份时,Github 挂了。是的,你没有听错,背靠微软,坐拥 azure 的 Github 挂了。最近还看到近几年大火的 Docker 也开始限度 Docker 商业版及 Docker 的其它服务(像Docker Hub)对特定国家和公司的应用。这些都体现了数据备份的重要性,尽管下面的事件对咱们小小集体影响不是很大,但覆巢之下,安有完卵。早点把握数据备份的办法能力从容应对将来突发的“意外”。本文将介绍在 ECS 上搭建类 Github 服务 Gogs, 并且定期备份 ECS 上数据到 OSS上,有条件的能够再将 OSS上的数据备份到本人的群辉 NAS 上。

介绍

“All in Cloud”的时代曾经到来。对于公司而言,保护机房的老本太高,所以购买像阿里这样的云服务器就比拟灵便且老本可控;而对于集体而言,领有一台云服务器(能够是阿里云,也能够是自搭的服务器【带公网IP】),在任何机器,任何环境下都领有同一套本人折腾的环境那也太不便了。上面就来介绍在云上进行开发中数据备份的那点事。

Gogs搭建

为什么要搭建 Gogs,因为 Github 也会挂,而且任何人也无奈保障它不会受某国的贸易管制影响。
Gogs 是一款极易搭建的 Git 服务,外围性能和 Github,Gitlab一样,但比二者更加轻量级。我的项目应用的 MIT 受权协定,能够无任何条件的收费应用。它有如下长处:

  1. 易装置 二进制包装置,同时反对Docker
  2. 跨平台 Go开发,反对全平台
  3. 轻量级 便宜的树莓派即可反对它的运行(2核512M)

这里应用 Docker 对其进行装置部署,docker-compose.yml文件如下:

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 的轻量级。

云机器备份到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# 配置ossutil64ossutil64 config

应用默认的配置文件地位 ~/.ossutilconfig

[Credentials]language=CHendpoint=https://oss-cn-shanghai-internal.aliyuncs.comaccessKeyID=myAccessKeyIDaccessKeySecret=myAccessKeySecret

crontab配置

脚本

#! /bin/bashday=`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.gzossutil64 -f cp /var/backups/ws/${tarname}.tar.gz oss://ws-bakup# 清理之前的打包文件find /var/backups/ws/ -mtime +4 -name "*.tar.gz" -exec rm -rf {} \;
# 每天凌晨一点备份数据到OSS0 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主动公布