This script uses bup
to backup your docker-compose
based redmine installation to a local bup
folder e.g. in /var/lib/bup/my-redmine.bup
:
#!/bin/bash # Auto-determine the name from the directory name # /opt/my-redmine => $NAME=my-redmine => /var/lib/bup/my-redmine.bup export NAME=$(basename $(pwd)) export BUP_DIR=/var/lib/bup/$NAME.bup bup_directory() { echo "BUPing $1" bup -d $BUP_DIR index $1 && bup save -9 --strip-path $(pwd) -n $1 $1 } # Init bup -d $BUP_DIR init # Save MariaDB source .env && docker-compose exec -T mariadb mysqldump -uroot -p${MARIADB_ROOT_PASSWORD} --all-databases | bup -d $BUP_DIR split -n $NAME-mariadb.sql # Save directories bup_directory redmine_data bup_directory redmine_themes # Backup self bup_directory backup.sh bup_directory docker-compose.yml # OPTIONAL: Add par2 information # This is only recommended for backup on unreliable storage or for extremely critical backups # If you already have bitrot protection (like BTRFS with regular scrubbing), this might be overkill. # Uncomment this line to enable: # bup fsck -g # OPTIONAL: Cleanup old backups bup -d $BUP_DIR prune-older --keep-all-for 1m --keep-dailies-for 6m --keep-monthlies-for forever -9 --unsafe
It will backup:
- MySQL data from inside redmine using
mysqldump
- The
redmine_data
folder - The
redmine_themes
folder - The backup script
backup.sh
itself docker-compose.yml
Place it in the same folder where docker-compose.yml
is located.
The script is compatible with our previous post How to create a systemd backup timer & service in 10 seconds