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
|
||||
|
||||
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
|
||||
|
||||
|
48
README.md
48
README.md
@ -1,12 +1,16 @@
|
||||
Use [restic](https://restic.net/) 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`
|
||||
|
||||
`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:
|
||||
|
||||
@ -18,4 +22,44 @@ For the database:
|
||||
|
||||
`MYSQL_PASSWORD` or `MYSQL_PASSWORD_FILE`
|
||||
|
||||
Use the `/app/init.sh` script to init a new remote.
|
||||
`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.
|
||||
`/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')
|
||||
do
|
||||
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
|
||||
|
||||
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")
|
||||
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 RESTIC_PASSWORD
|
||||
export MYSQL_PASSWORD_ACTUAL
|
||||
export RESTIC_REPOSITORY
|
||||
export PGPASSWORD
|
||||
|
Loading…
Reference in New Issue
Block a user