Giter Site home page Giter Site logo

dumpmemory / gobackup Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gobackup/gobackup

0.0 0.0 0.0 597 KB

🗄 Simple tool for backup your databases, files to FTP / SCP / S3 storages.

Home Page: https://gobackup.github.io

License: MIT License

Shell 0.90% Go 91.17% Makefile 0.19% Dockerfile 1.15% HTML 0.22% JavaScript 0.22% TypeScript 5.38% SCSS 0.77%

gobackup's Introduction

GoBackup

CLI tool for backup your databases, files to cloud storages in schedully.

Build Status GitHub release (latest by date) Docker Image Version (latest server) homebrew version

GoBackup is a backup tool design for application servers, to backup your databases, files to cloud storages (FTP, SCP, S3, GCS, Aliyun OSS ...) in schedully.

Simple, easy to use, one time setup, run years without any maintenance, low cost (recycle), secure (encrypt compress).

Inspired by backup/backup and replace it for without Ruby dependency.

asciicast

GoBackup 是一个为中小型服务器而设计备份工具,内置计划任务,帮你定时备份数据库、配置文件,通过导出、打包压缩,最终存储到外部云存储(如:FTP、SCP、S3、GCS、Aliyun OSS ...)。

简单易用,一次性部署后能持续运行数年无需任何维护,存储成本低(回收机制),安全可靠(加密压缩)。

🎈 Ruby China 的应用服务器从 GoBackup 设计之初(2017 年)开始就每日全量备份到外部的云存储,并持续数年一直默默的备份着,完全不需要维护。Aliyun OSS 上,每月成本仅为 0.2 RMB(文件回收周期为 1 个月)。

https://gobackup.github.io

Features

  • No dependencies.
  • Multiple Databases source support.
  • Multiple Storage type support.
  • Archive paths or files into a tar.
  • Split large backup file into multiple parts.
  • Run as daemon to backup in schedully.
  • Web UI to manage backups.

Databases

  • MySQL
  • PostgreSQL
  • Redis
  • MongoDB
  • SQLite
  • Microsoft SQL Server
  • InfluxDB
  • MariaDB
  • etcd

Storages

Notifier

since: 1.5.0

Send notification when backup has success or failed.

  • Mail (SMTP)
  • Webhook
  • Discord
  • Slack
  • Feishu
  • DingTalk
  • GitHub (Comment on Issue)
  • Telegram
  • AWS SES
  • Postmark
  • SendGrid

Installation

curl -sSL https://gobackup.github.io/install | sh

after that, you will get /usr/local/bin/gobackup command.

Install via Homebrew

brew install gobackup
$ gobackup -h
NAME:
   gobackup - Backup your databases, files to FTP / SCP / S3 / GCS and other cloud storages.

USAGE:
   gobackup [global options] command [command options] [arguments...]

VERSION:
   1.3.0

COMMANDS:
   perform
   start    Start as daemon
   run      Run GoBackup
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)

Configuration

GoBackup will seek config files in:

  • ~/.gobackup/gobackup.yml
  • /etc/gobackup/gobackup.yml

Example config: gobackup_test.yml

models:
  gitlab_app:
    databases:
      gitlab_db:
        type: postgresql
        database: gitlab_production
        username: gitlab
        password:
      gitlab_redis:
        type: redis
        mode: sync
        rdb_path: /var/db/redis/dump.rdb
        invoke_save: true
    storages:
      s3:
        type: s3
        bucket: my_app_backup
        region: us-east-1
        path: backups
        access_key_id: $S3_ACCESS_KEY_Id
        secret_access_key: $S3_SECRET_ACCESS_KEY
    compress_with:
      type: tgz

Usage

Perform backup

$ gobackup perform

Backup schedule

GoBackup built in a daemon mode, you can use gobackup start to start it.

You can configure the schedule for each models, it will run backup task at the time you set.

For example

Configure your schedule in gobackup.yml

models:
  my_backup:
    before_script: |
      echo "Before script"
    after_script: |
      echo "After script"
    schedule:
      # At 04:05 on Sunday.
      cron: "5 4 * * sun"
    storages:
      local:
        type: local
        path: /path/to/backups
    databases:
      mysql:
        type: mysql
        host: localhost
        port: 3306
        database: my_database
        username: root
        password: password
  other_backup:
    # At 04:05 on every day.
    schedule:
      every: "1day",
      at: "04:05"
    storages:
      local:
        type: local
        path: /path/to/backups
    databases:
      mysql:
        type: mysql
        host: localhost
        port: 3306
        database: my_database
        username: root
        password: password

Start Daemon & Web UI

GoBackup bulit a HTTP Server for Web UI, you can start it by gobackup start.

It also will handle the backup schedule.

$ gobackup start

2023/03/15 23:00:30 [Config] Load config from default path.
Starting API server on port http://127.0.0.1:2703

NOTE: If you wants start without daemon, use gobackup run instead.

Now visit http://127.0.0.1:2703 you can see the Web UI:

gobackup-webui-main gobackup-webui-files

Signal handling

GoBackup will handle the following signals:

  • HUP - Hot reload configuration.
  • QUIT - Graceful shutdown.
$ ps aux | grep gobackup
jason            20443   0.0  0.1 409232800   8912   ??  Ss    7:47PM   0:00.02 gobackup run

# Reload configuration
$ kill -HUP 20443
# Exit daemon
$ kill -QUIT 20443

Contributing

The DEVELOPMENT document will help you to setup development environment, and guide you how to test them in local.

When you finish your work, please send a PR.

License

MIT

gobackup's People

Contributors

1k-off avatar alexkorotysh avatar antonchen avatar cqpx avatar dependabot[bot] avatar doitian avatar fossabot avatar fstream7 avatar griffinqiu avatar hakastein avatar holgerhuo avatar huacnlee avatar ikermani avatar ionling avatar jmad12 avatar kongminhao avatar merifri avatar muresan avatar pomazanbohdan avatar rprtr258 avatar schakko avatar snird avatar songjiayang avatar sranka avatar testwill avatar thomashoell avatar tomklapka avatar tristanmorgan avatar zachcheung avatar zhaojun1998 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.