vanegmondgroep / backup-cli
An extendable command-line interface for backing up and restoring data using Restic.
Installs: 26
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:Shell
pkg:composer/vanegmondgroep/backup-cli
README
An extendable command-line interface for backing up and restoring data using Restic.
Install
Before installing Backup CLI, please make sure your environment meets the minimum requirements:
Once you’ve verified the requirements, download and install Backup CLI with Composer.
# Install Backup CLI package
composer require vanegmondgroep/backup-cli
By default, commands are invoked using the vendor/bin/bcli script. However, instead of repeatedly
typing vendor/bin/bcli to execute commands, you may wish to configure a shell alias that allows you to execute
commands more easily:
alias bcli='[ -f bcli ] && sh bcli || sh vendor/bin/bcli'
To make sure this is always available, you may add this to your shell configuration file in your home directory, such
as ~/.zshrc or ~/.bashrc, and then restart your shell.
Commands
# Backup a service bcli backup <service> # Display service snapshots bcli snapshots <service> # Restore a service bcli restore <service> <snapshot-id> # Display backup logs bcli logs <service>
Configuration
Backup CLI loads environment variables from a .env file within the current working directory. The following variables
are available:
| Variable | Default | 
|---|---|
| <service>_BACKUP_PATH** | - | 
| BACKUP_PASSWORD | supersecret | 
| BACKUP_LOGS_PATH | ./backup/logs | 
| BACKUP_HOOKS_PATH | ./backup/hooks | 
| BACKUP_REPOSITORIES_PATH | ./backup/repositories | 
| BACKUP_KEEP_LAST | 5 | 
| BACKUP_KEEP_DAILY | 31 | 
| BACKUP_KEEP_MONTHLY | 12 | 
| BACKUP_KEEP_YEARLY | 1 | 
** This defines a service path you would like to back up (e.g. MYSQL_BACKUP_PATH).
Hooks
Backup CLI calls scripts (hooks) before and after a backup or restore. This allows you to perform an action, such as exporting a database before a backup is made. The following hooks are available:
| Hook | Description | 
|---|---|
| $BACKUP_HOOKS_PATH/<service>_pre_backup_hook | Invoked before a backup | 
| $BACKUP_HOOKS_PATH/<service>_post_backup_hook | Invoked after a backup | 
| $BACKUP_HOOKS_PATH/<service>_pre_restore_hook | Invoked before a restore | 
| $BACKUP_HOOKS_PATH/<service>_post_restore_hook | Invoked after a restore | 
Logs
Logs are written to $BACKUP_LOGS_PATH/<service>.log.
Example
The example configuration shows how you can back up / restore a MySQL and Node-RED container.
Cronjobs
To schedule a backup, add the following line to your crontab:
# Run MySQL backup every day at 01:00 0 1 * * * cd <project-dir> && vendor/bin/bcli backup mysql # Run Node-RED backup every day at 02:00 0 2 * * * cd <project-dir> && vendor/bin/bcli backup node-red