Repo of the Day
gobackup/gobackup: 🗄 CLI tool for backup your databases, files to cloud storages in schedully.
Published: Sep 20, 2026
Open repository ↗🗄 CLI tool for backup your databases, files to cloud storages in schedully. - gobackup/gobackup
Summary
GoBackup is a Go-based CLI for backing up databases and files to local or cloud storage on a schedule, distributed under the MIT license. It supports many database engines and storage backends, runs as a daemon with an HTTP web UI, and handles compression, splitting, and notifications. The project positions itself as a low-maintenance, no-dependency alternative to Ruby-based backup tools, intended for one-time setup and long-running scheduled operation.
What it is useful for
GoBackup is useful for engineers running application servers who need to schedule regular backups of database contents and arbitrary file paths, then push those archives to remote storage. It supports a long list of database engines (MySQL, PostgreSQL, Redis, MongoDB, SQLite, Microsoft SQL Server, InfluxDB, MariaDB, etcd, Firebird) and storage backends (Local, FTP, SFTP, SCP, Amazon S3, Aliyun OSS, Google Cloud Storage, Azure Blob, Backblaze B2, Cloudflare R2, DigitalOcean Spaces, MinIO, WebDAV, and several other Chinese cloud providers). The tool also archives files into tar, splits large archives into multiple parts, and sends notifications through email, Slack, Discord, Telegram, webhooks, GitHub, and other channels on success or failure. A Web UI on port 2703 provides a way to inspect and manage backups alongside the CLI.
How engineers can use it
Engineers can install GoBackup with brew install gobackup on macOS, or by running curl -sSL https://gobackup.github.io/install | sh, which places the binary at /usr/local/bin/gobackup. A Docker image (huacnlee/gobackup) is also published. Configuration lives at ~/.gobackup/gobackup.yml or /etc/gobackup/gobackup.yml, defining one or more models with databases, storages, compress_with, and an optional schedule (either a cron expression like "5 4 * * sun", or an every/at pair such as every: "1day", at: "04:05").
A typical model wires a PostgreSQL database to an S3 bucket using environment variables for credentials, compresses with tgz, and is triggered via gobackup perform for a one-off run or gobackup start to launch the daemon that schedules jobs and serves the Web UI at http://127.0.0.1:2703 (use gobackup run to stay in the foreground). before_script and after_script hooks let you run shell steps around each job, and the daemon handles HUP (hot-reload config) and QUIT (graceful shutdown) signals. For non-trivial setups, the README points to gobackup_test.yml as the most complete configuration example.