GoBackup
简单的工具,用于备份您的数据库,文件到云存储。
GoBackup 是一款针对 Web 服务器设计的全栈备份工具,类似于 backup/backup,配合 Crontab 自动备份。
你可以写一个配置文件,运行 gobackup 命令一次将数据库转储为文件,将配置文件归档,然后打包成一个文件。
它允许您将备份文件存储到本地、FTP、SCP、S3 或其他云存储空间。
详细中文介绍: https://ruby-china.org/topics/34094
特性
- 无依赖性。
- 支持多个数据库源。
- 支持多种存储类型。
- 将路径或文件归档到一个 tar 文件中。
当前支持状态
数据库
- MySQL
- PostgreSQL
- Redis -- mode: sync/copy
- MongoDB
归档
使用 tar 命令将多个文件或路径归档为 .tar 文件。
压缩
- Tgz - .tar.gz
- Uncompressed - .tar
加密
- OpenSSL -- aes-256-cbc encrypt
存储
- Local
- FTP
- SCP - Upload via SSH copy
- Amazon S3
- Alibaba Cloud Object Storage Service (OSS)
安装(macOS/Linux)
$ curl -sSL https://git.io/gobackup | bash
然后,你可以得到 /usr/local/bin/gobackup 命令
$ gobackup -h NAME: gobackup - Easy full stack backup operations on UNIX-like systems USAGE: gobackup [global options] command [command options] [arguments...] VERSION: 0.1.0 COMMANDS: perform help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --help, -h show help --version, -v print the version
配置
GoBackup 在以下位置寻找配置文件:
- ./gobackup.yml
- ~/.gobackup/gobackup.yml
- /etc/gobackup/gobackup.yml
示例配置:gobackup_test.yml
models: gitlab: compress_with: type: tgz store_with: type: scp path: ~/backup host: your-host.com private_key: ~/.ssh/id_rsa username: ubuntu password: password timeout: 300 databases: gitlab: type: mysql host: localhost port: 3306 database: gitlab_production username: root password: additional_options: --single-transaction --quick gitlab_redis: type: redis mode: sync rdb_path: /var/db/redis/dump.rdb invoke_save: true password: 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 =======
备份计划
你可能想定期运行备份,你需要 Crontab。
$ crontab -l 0 0 * * * /usr/local/bin/gobackup perform >> ~/.gobackup/gobackup.log
0 0 * * *表示每天凌晨0:00运行。
而在一天之后,你可以通过 ~/.gobackup/gobackup.log 来查询执行状态。
许可证
MIT