关于SegmentFault:云上开发之数据备份

2次阅读

共计 2339 个字符,预计需要花费 6 分钟才能阅读完成。

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
# 配置 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 主动公布

正文完
 0