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
# 配置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
操作流程如下:
- 登陆群辉Nas,打开 Cloud Sync
- 选择云供应商:阿里云对象存储
- 填写myAccessKeyID和myAccessKeySecret,并选择要备份的Bucket:ws-bakup
- 基本配置完成,还可以修改计划(类似crontab)
这样整个云上开发的数据备份流程就整完了。
参考文献
如果该文章对您产生了帮助,或者您对技术文章感兴趣,可以关注微信公众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!
本篇文章由一文多发平台ArtiPub自动发布