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 受权协定,能够无任何条件的收费应用。它有如下长处:
- 易装置 二进制包装置,同时反对Docker
- 跨平台 Go开发,反对全平台
- 轻量级 便宜的树莓派即可反对它的运行(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
当咱们将很多的代码以及服务放在云上进行运行时,如果服务器被黑或者不小心误删了数据,此时备份数据能够让咱们升高损失。服务器数据备份的办法有很多种,比方
- 人工定期从服务器上拷贝文件,问题是人工成本大,不肯定记得住。
- 本人服务器通过crontab启定时工作,通过rsync或者scp进行文件备份,前提是你得有台本人服务器
- 通过群辉 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
操作流程如下:
- 登陆群辉Nas,关上 Cloud Sync
- 抉择云供应商:阿里云对象存储
- 填写myAccessKeyID和myAccessKeySecret,并抉择要备份的Bucket:ws-bakup
- 根本配置实现,还能够批改打算(相似crontab)
这样整个云上开发的数据备份流程就整完了。
参考文献
- 阿里云ECS数据迁徙至OSS
- Gogs中文文档
- Gogs源码
如果该文章对您产生了帮忙,或者您对技术文章感兴趣,能够关注微信公众号: 技术茶话会, 可能第一工夫收到相干的技术文章,谢谢!
本篇文章由一文多发平台ArtiPub主动公布