《酷Go - GoBackup 自动化服务器备份工具》

之前,我曾经写过一片《Backup - 备份你的服务器环境》

同时 Ruby China 以及一些其他的场景我也在持续用它备份我需要维护的服务器,但是,久了你回发现,部署 Backup 其实很麻烦,运行也会因为 Ruby 的版本迭代导致一些小问题。

于是我想着用 Go 来写一个类似的东西,简化备份这件事情。

《酷Go - GoBackup 自动化服务器备份工具》_第1张图片

GoBackup 是一个类似 backup/backup 的一站式备份工具,为中小型服务器/个人服务器而设计,配合 Crontab 以实现定时备份的目的。

使用 GoBackup 你可以通过一个简单的配置文件,一次(执行一个命令)将服务器上重要的(数据库、配置文件)东西导出、打包压缩,并备份到指定目的地(如:本地路径、FTP、云存储...)。

项目地址

https://gobackup.github.io

功能特点

  • 一键式自动化备份,简化繁琐备份工作。

  • 简单无依赖安装,一个 bin + 一个配置文件,一次性部署,持续零维护备份。

  • 支持多种数据库源。

  • 支持多种打包存储格式。

  • 支持普通文件、文件夹打包备份。

  • 良好的可扩展性,未来支持丰富的数据源、存储方式等等。


目前支持状态

打包压缩

  • Tgz - .tar.gz


数据库

  • MySQL

  • PostgreSQL

  • Redis - mode: sync/copy

  • MongoDB


文件备份 Archive

基于 tar 命令将多个文件/文件夹打包在一个 .tar 文件里面,支持排除特定文件。

存储方式

  • Local

  • FTP

  • SCP

  • Amazon S3

  • Aliyun OSS


安装 / 升级 GoBackup for Linux

$ curl -sSL https://git.io/gobackup | bash

等上面执行成功以后,会把 gobackup 安装在 /usr/local/bin/gobackup 路径,然后你可以:

$ gobackup -v
gobackup 0.4.0


配置

GoBackup 会自动在下面的地方寻找配置文件:

  • ~/.gobackup/gobackup.yml

  • /etc/gobackup/gobackup.yml

你可以参考一下下面的配置:

# 基本节点,描述有多少个备份方案
models:
  gitlab:
    # 备份打包
    compress_with:
      # 压缩方式
      type: tgz
    # 存储
    store_with:
      # 通过 scp 存储
      type: scp
      path: ~/backup
      host: your-host.com
      private_key: ~/.ssh/id_rsa
      username: ubuntu
      password: password
      timeout: 300
    # 需要备份的数据库
    databases:
      # 别名
      gitlab:
        # 类型: mysql, postgresql, redis
        type: mysql
        host: localhost
        port: 3306
        database: gitlab_production
        username: root
        password: 
      gitlab_redis:
        type: redis
        # 备份前是否要求 Redis 执行 SAVE 命令
        invoke_save: true
        # redis 的备份方式,远程服务器请用 sync
        mode: sync
        password: 
        # 如果 redis 在本地服务器,可以用 copy 模式
        # mode: copy
        # rdb_path: /var/db/redis/dump.rdb
    # 文件备份
    archive:
      # 需要备份的文件、文件夹
      includes:
        - /home/git/.ssh/
        - /etc/mysql/my.conf
        - /etc/nginx/nginx.conf
        - /etc/nginx/conf.d
        - /etc/redis/redis.conf
        - /etc/logrotate.d/
      # 需要排除的文件/文件夹
      excludes:
        - /home/ubuntu/.ssh/known_hosts
        - /etc/logrotate.d/syslog
  gitlab_repos:
    store_with:
      type: local
      path: /data/backups/gitlab-repos/
    archive:
      includes:
        - /home/git/repositories


执行备份

$ gobackup perform
2017/09/08 06:47:36 ======== ruby_china ========
2017/09/08 06:47:36 WorkDir: /tmp/gobackup/1504853256396379166
2017/09/08 06:47:36 ------------- Databases --------------
2017/09/08 06:47:36 => database | Redis: mysql
2017/09/08 06:47:36 Dump mysql dump to /tmp/gobackup/1504853256396379166/mysql/ruby-china.sql
2017/09/08 06:47:36


2017/09/08 06:47:36 => database | Redis: redis
2017/09/08 06:47:36 Copying redis dump to /tmp/gobackup/1504853256396379166/redis
2017/09/08 06:47:36
2017/09/08 06:47:36 ----------- End databases ------------


2017/09/08 06:47:36 ------------- Compressor --------------
2017/09/08 06:47:36 => Compress with Tgz...
2017/09/08 06:47:39 -> /tmp/gobackup/2017-09-08T14:47:36+08:00.tar.gz
2017/09/08 06:47:39 ----------- End Compressor ------------


2017/09/08 06:47:39 => storage | FTP
2017/09/08 06:47:39 -> Uploading...
2017/09/08 06:47:39 -> upload /ruby_china/2017-09-08T14:47:36+08:00.tar.gz
2017/09/08 06:48:04 Cleanup temp dir...
2017/09/08 06:48:04 ======= End ruby_china =======


定时备份

GoBackup 内置了计划任务功能,你可以通过 gobackup.yml 来配置。

详见:https://gobackup.github.io/schedule


TIP: 目前 GoBackup 已经在 Ruby China 的服务器上运作起来了。outside_default.png

c1c13b5724bc1fe3d5b74c6a0b7370b7.jpeg


GopherChina 2023上海站 

快点击阅读原文报名吧~~

你可能感兴趣的:(golang,自动化,服务器,开发语言,后端)