CLI tool for backup your databases, files to cloud storages in schedully.
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.
GoBackup 是一个为中小型服务器而设计备份工具,内置计划任务,帮你定时备份数据库、配置文件,通过导出、打包压缩,最终存储到外部云存储(如:FTP、SCP、S3、GCS、Aliyun OSS ...)。
简单易用,一次性部署后能持续运行数年无需任何维护,存储成本低(回收机制),安全可靠(加密压缩)。
🎈 Ruby China 的应用服务器从 GoBackup 设计之初(2017 年)开始就每日全量备份到外部的云存储,并持续数年一直默默的备份着,完全不需要维护。Aliyun OSS 上,每月成本仅为 0.2 RMB(文件回收周期为 1 个月)。
- 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.
- MySQL
- PostgreSQL
- Redis
- MongoDB
- SQLite
- Microsoft SQL Server
- InfluxDB
- MariaDB
- etcd
- Local
- FTP
- SFTP
- SCP - Upload via SSH copy
- Amazon S3
- Aliyun OSS
- Google Cloud Storage
- Azure Blob Storage
- Backblaze B2 Cloud Storage
- Cloudflare R2
- DigitalOcean Spaces
- QCloud COS
- UCloud US3
- Qiniu Kodo
- Baidu BOS
- MinIO
- Huawei OBS
- Volcengine TOS
- UpYun
- WebDAV
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
curl -sSL https://gobackup.github.io/install | sh
after that, you will get /usr/local/bin/gobackup
command.
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)
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
$ gobackup perform
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.
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
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 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
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.
MIT