added postgress support
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
92a0ea8f77
commit
505d6d4d44
@ -1,6 +1,6 @@
|
|||||||
FROM restic/restic
|
FROM restic/restic
|
||||||
|
|
||||||
RUN apk add --no-cache mysql-client rclone bash fuse
|
RUN apk add --no-cache mysql-client rclone bash fuse postgresql-client
|
||||||
|
|
||||||
RUN mkdir /app && mkdir /config
|
RUN mkdir /app && mkdir /config
|
||||||
|
|
||||||
|
46
README.md
46
README.md
@ -1,12 +1,16 @@
|
|||||||
Use [restic](https://restic.net/) together with rclone for a poor mans backup solution.
|
Use [restic](https://restic.net/) together with rclone for a poor mans backup solution.
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
|
||||||
Environment variables:
|
Environment variables:
|
||||||
|
|
||||||
`RCLONE_REMOTE` remote for rclone e.g. `gdrive:/backup`
|
`RCLONE_REMOTE` remote for rclone e.g. `gdrive:/backup`
|
||||||
|
|
||||||
`RCLONE_CONFIG` file path for the rclone config file e.g. `/config/rclone.conf`
|
`RCLONE_CONFIG` file path for the rclone config file e.g. `/config/rclone.conf`
|
||||||
|
|
||||||
`ENC_PASSWORD` or `ENC_PASSWORD_FILE` password for the repo
|
`RESTIC_PASSWORD` or `RESTIC_PASSWORD_FILE` password for the repo
|
||||||
|
|
||||||
|
`RCLONE_CONFIG_FILE` content of the rclone config.
|
||||||
|
|
||||||
For the database:
|
For the database:
|
||||||
|
|
||||||
@ -18,4 +22,44 @@ For the database:
|
|||||||
|
|
||||||
`MYSQL_PASSWORD` or `MYSQL_PASSWORD_FILE`
|
`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.
|
Use the `/app/init.sh` script to init a new remote.
|
||||||
|
|
||||||
|
# Directorys
|
||||||
|
|
||||||
|
`/config` Contains the rclone config.
|
||||||
|
`/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:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# get all volumes with the "backup.enable" lable 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
|
||||||
|
```
|
||||||
|
@ -9,7 +9,13 @@ mkdir -p /backup/sqlDump
|
|||||||
for db in $(echo "$MYSQL_DUMP_DB" | sed 's/,/\n/g')
|
for db in $(echo "$MYSQL_DUMP_DB" | sed 's/,/\n/g')
|
||||||
do
|
do
|
||||||
echo "Dumping db: $db"
|
echo "Dumping db: $db"
|
||||||
mysqldump --compact -P 3306 --host "$MYSQL_HOST" -u "$MYSQL_USERNAME" "-p$MYSQL_PASSWORD_ACTUAL" "$db" > "/backup/sqlDump/$db.sql"
|
mysqldump --compact -P 3306 --host "$MYSQL_HOST" -u "$MYSQL_USERNAME" "-p$MYSQL_PASSWORD_ACTUAL" "$db" > "/backup/sqlDump/$db-mysql.sql"
|
||||||
|
done
|
||||||
|
|
||||||
|
for db in $(echo "$POSTGRES_DUMP_DB" | sed 's/,/\n/g')
|
||||||
|
do
|
||||||
|
echo "Dumping db: $db"
|
||||||
|
pg_dump -U "$POSTGRES_USERNAME" --host "$POSTGRES_HOST" "$db" > "/backup/sqlDump/$db-postgres.sql"
|
||||||
done
|
done
|
||||||
|
|
||||||
restic --verbose backup "/backup"
|
restic --verbose backup "/backup"
|
||||||
|
7
setup.sh
7
setup.sh
@ -31,7 +31,14 @@ elif [ -n "${MYSQL_PASSWORD_FILE}" ]; then
|
|||||||
MYSQL_PASSWORD_ACTUAL=$(cat "$MYSQL_PASSWORD_FILE")
|
MYSQL_PASSWORD_ACTUAL=$(cat "$MYSQL_PASSWORD_FILE")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "$POSTGRES_PASSWORD" ];then
|
||||||
|
PGPASSWORD="$POSTGRES_PASSWORD"
|
||||||
|
elif [ -n "$POSTGRES_PASSWORD_FILE" ]; then
|
||||||
|
PGPASSWORD=$(cat "$POSTGRES_PASSWORD_FILE")
|
||||||
|
fi
|
||||||
|
|
||||||
export RCLONE_REMOTE
|
export RCLONE_REMOTE
|
||||||
export RESTIC_PASSWORD
|
export RESTIC_PASSWORD
|
||||||
export MYSQL_PASSWORD_ACTUAL
|
export MYSQL_PASSWORD_ACTUAL
|
||||||
export RESTIC_REPOSITORY
|
export RESTIC_REPOSITORY
|
||||||
|
export PGPASSWORD
|
||||||
|
Loading…
Reference in New Issue
Block a user