diff --git a/pica-backup/Dockerfile b/pica-backup/Dockerfile index 3bc49eabb4211112f7b43185a4081cbf56dfffb7..14ded5872f34fba81c3491db6ec06ae1d740332f 100644 --- a/pica-backup/Dockerfile +++ b/pica-backup/Dockerfile @@ -6,12 +6,14 @@ RUN apt-get update && \ postgresql-client \ mysql-client \ cron && \ - apt-get clean + apt-get clean \ + mkdir /scripts/{mysql,postgresql} ENV CRON_TIME="0 0 * * *" \ MYSQL_DB="--all-databases" -COPY mysql-run.sh /mysql-run.sh -COPY postgres-run.sh /postgres-backup.sh + +COPY mysql-run.sh /scripts/mysql/mysql-run.sh +COPY postgres-run.sh /scripts/postgresql/postgres-backup.sh VOLUME ["/backup"] diff --git a/pica-backup/run.sh b/pica-backup/run.sh index e5c0ae6b35c77975af74315196a6f532a7887c46..6892549ba91001bff0131cd3395f34214a2d8a6f 100755 --- a/pica-backup/run.sh +++ b/pica-backup/run.sh @@ -14,13 +14,17 @@ # MYSQL_CRON_TIME_LIST POSTGRES_CRON_TIME_LIST # MYSQL_EXTRA_OPTS_LIST POSTGRES_EXTRA_OPTS-LIST +##################### +# Create the arrays # +##################### + IFS=, #MYSQL read -a MYSQL_HOST_ARRAY <<< "$MYSQL_HOST_LIST" read -a MYSQL_PORT_ARRAY <<< "$MYSQL_PORT_LIST" read -a MYSQL_USER_ARRAY <<< "$MYSQL_USER_LIST" read -a MYSQL_PASS_ARRAY <<< "$MYSQL_PASS_LIST" -read -a MYSQL_MAX_BACKUP_ARRAY <<< "$MYSQL_MAX_BACKUP_LIST" +read -a MYSQL_MAX_BACKUPS_ARRAY <<< "$MYSQL_MAX_BACKUPS_LIST" read -a MYSQL_INIT_BACKUP_ARRAY <<< "$MYSQL_INIT_BACKUP_LIST" read -a MYSQL_CRON_TIME_ARRAY <<< "$MYSQL_CRON_TIME_LIST" read -a MYSQL_EXTRA_OPTS_ARRAY <<< "$MYSQL_EXTRA_OPTS_LIST" @@ -30,9 +34,45 @@ read -a POSTGRES_HOST_ARRAY <<< "$POSTGRES_HOST_LIST" read -a POSTGRES_PORT_ARRAY <<< "$POSTGRES_PORT_LIST" read -a POSTGRES_USER_ARRAY <<< "$POSTGRES_PASS_LIST" read -a POSTGRES_DB_ARRAY <<< "$POSTGRES_DB_LIST" -read -a POSTGRES_MAX_BACKUP_ARRAY <<< "$POSTGRES_MAX_BACKUP_LIST" +read -a POSTGRES_MAX_BACKUPS_ARRAY <<< "$POSTGRES_MAX_BACKUPS_LIST" read -a POSTGRES_INIT_BACKUP_ARRAY <<< "$POSTGRES_INIT_BACKUP_LIST" read -a POSTGRES_CRON_TIME_ARRAY <<< "$POSTGRES_CRON_TIME_LIST" read -a POSTGRES_EXTRA_OPTS_ARRAY <<< "$POSTGRES_EXTRA_OPTS_LIST" +########################### +# Call the backup scripts # +########################### + +# Define the scripts location + +#Execute MySQL backups +NB_CALLS=${#MYSQL_HOST_ARRAY[@]} + +for (( i=0; i < $NB_CALLS; i++ )) +do + MYSQL_HOST=${MYSQL_HOST_ARRAY[i]} \ + MYSQL_PORT=${MYSQL_PORT_ARRAY[i]} \ + MYSQL_USER=${MYSQL_USER_ARRAY[i]} \ + MYSQL_PASS=${MYSQL_PASS_ARRAY[i]} \ + MAX_BACKUPS=${MYSQL_MAX_BACKUPS_ARRAY[i]} \ + INIT_BACKUP=${MYSQL_INIT_BACKUP_ARRAY[i]} \ + CRON_TIME=${MYSQL_CRON_TIME_ARRAY[i]} \ + EXTRA_OPTS=${MYSQL_EXTRA_OPTS_ARRAY[i]} \ + /script/mysql/mysql-run.sh +done + +#Execute PostgreSQL backups +NB_CALLS=${#POSTGRES_HOST_ARRAY[@]} +for (( i=0; i < $NB_CALLS; i++ )) +do + POSTGRES_HOST=${POSTGRES_HOST_ARRAY[i]} \ + POSTGRES_PORT=${POSTGRES_PORT_ARRAY[i]} \ + POSTGRES_USER=${POSTGRES_USER_ARRAY[i]} \ + POSTGRES_PASS=${POSTGRES_PASS_ARRAY[i]} \ + MAX_BACKUPS=${POSTGRES_MAX_BACKUP_ARRAY[i]} \ + INIT_BACKUP=${POSTGRES_INIT_BACKUP_ARRAY[i]} \ + CRON_TIME=${POSTGRES_CRON_TIME_ARRAY[i]} \ + EXTRA_OPTS=${POSTGRES_EXTRA_OPTS_ARRAY[i]} \ + /script/postgresql/postgres-run.sh +done