backup-docker/README.md
Djeeberjr 818e58f179
All checks were successful
continuous-integration/drone/push Build is passing
big refactor
too lazy to list things
2022-03-27 19:28:00 +02:00

1.6 KiB

Use restic together with rclone for a poor mans backup solution.

Configuration

Environment variables:

RCLONE_REMOTE remote for rclone e.g. gdrive:/backup

RCLONE_CONFIG file path for the rclone config file e.g. /config/rclone.conf

RESTIC_PASSWORD or RESTIC_PASSWORD_FILE password for the repo

RCLONE_CONFIG_CONTENT content of the rclone config.

For the database:

MYSQL_DUMP_DB all databases comma sperated: db1,db2

MYSQL_HOST

MYSQL_USERNAME

MYSQL_PASSWORD or MYSQL_PASSWORD_FILE

POSTGRES_DUMP_DB all databases comma sperated: db1,db2

POSTGRES_HOST

POSTGRES_USERNAME

POSTGRES_PASSWORD or POSTGRES_PASSWORD_FILE

Use the /app/init.sh script to init a new remote.

Directorys

/config Contains the rclone config. Can also be passed as env var. /backup Contains the mounted volumes as read only /restore Contains volumes to restore

Usage

Here is an example of the script i use to backup my volumes:

#!/usr/bin/env sh
set -e 

# get all volumes with the "backup.enable" label on it
BACKUP_VOL=$(docker volume ls --filter "label=backup.enable" --format '-v {{ .Name }}:/backup/{{ .Name }}:ro ')

docker run \
    --rm \
    -e "RCLONE_REMOTE=gdrive:/backup" \
    -e "RCLONE_CONFIG=/config/rclone.conf" \
    -e "ENC_PASSWORD=MyPassword" \
    -e "MYSQL_USERNAME=root" \
    -e "MYSQL_PASSWORD=dbPassword" \
    -e "MYSQL_DUMP_DB=db1,db2" \
    -e "MYSQL_HOST=databaseHost" \
    --network "dbNet" \
    -v "/var/docker/backup:/config" \
    $BACKUP_VOL \
    djeeberjr/backup \
    backup