From b1adbb38e60c5550106cc1cb4d6749b926fbc761 Mon Sep 17 00:00:00 2001 From: Joachim Astel Date: Sun, 16 May 2021 08:19:52 +0200 Subject: [PATCH] Update backup_and_restore.sh (#4098) Script breaks when there are more then one name matching, see Issue #4097 --- helper-scripts/backup_and_restore.sh | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/helper-scripts/backup_and_restore.sh b/helper-scripts/backup_and_restore.sh index af15d40a..189a6607 100755 --- a/helper-scripts/backup_and_restore.sh +++ b/helper-scripts/backup_and_restore.sh @@ -86,32 +86,32 @@ function backup() { vmail|all) docker run --name mailcow-backup --rm \ -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:ro,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_vmail-vol-1$):/vmail:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_vmail.tar.gz /vmail ;;& crypt|all) docker run --name mailcow-backup --rm \ -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:ro,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_crypt-vol-1$):/crypt:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_crypt.tar.gz /crypt ;;& redis|all) docker exec $(docker ps -qf name=redis-mailcow) redis-cli save docker run --name mailcow-backup --rm \ -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:ro,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_redis-vol-1$):/redis:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_redis.tar.gz /redis ;;& rspamd|all) docker run --name mailcow-backup --rm \ -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:ro,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_rspamd-vol-1$):/rspamd:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_rspamd.tar.gz /rspamd ;;& postfix|all) docker run --name mailcow-backup --rm \ -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:ro,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_postfix-vol-1$):/postfix:ro,z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable" -Pcvpf /backup/backup_postfix.tar.gz /postfix ;;& mysql|all) @@ -123,8 +123,8 @@ function backup() { else echo "Using SQL image ${SQLIMAGE}, starting..." docker run --name mailcow-backup --rm \ - --network $(docker network ls -qf name=${CMPS_PRJ}_mailcow-network) \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:ro,z \ + --network $(docker network ls -qf name=^${CMPS_PRJ}_mailcow-network$) \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_mysql-vol-1$):/var/lib/mysql/:ro,z \ -t --entrypoint= \ --sysctl net.ipv6.conf.all.disable_ipv6=1 \ -v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup:z \ @@ -160,7 +160,7 @@ function restore() { docker stop $(docker ps -qf name=dovecot-mailcow) docker run -it --name mailcow-backup --rm \ -v ${RESTORE_LOCATION}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_vmail-vol-1$):/vmail:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_vmail.tar.gz docker start $(docker ps -aqf name=dovecot-mailcow) echo @@ -179,7 +179,7 @@ function restore() { docker stop $(docker ps -qf name=redis-mailcow) docker run -it --name mailcow-backup --rm \ -v ${RESTORE_LOCATION}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_redis-vol-1$):/redis:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_redis.tar.gz docker start $(docker ps -aqf name=redis-mailcow) ;; @@ -187,7 +187,7 @@ function restore() { docker stop $(docker ps -qf name=dovecot-mailcow) docker run -it --name mailcow-backup --rm \ -v ${RESTORE_LOCATION}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_crypt-vol-1$):/crypt:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_crypt.tar.gz docker start $(docker ps -aqf name=dovecot-mailcow) ;; @@ -195,7 +195,7 @@ function restore() { docker stop $(docker ps -qf name=rspamd-mailcow) docker run -it --name mailcow-backup --rm \ -v ${RESTORE_LOCATION}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_rspamd-vol-1$):/rspamd:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_rspamd.tar.gz docker start $(docker ps -aqf name=rspamd-mailcow) ;; @@ -203,7 +203,7 @@ function restore() { docker stop $(docker ps -qf name=postfix-mailcow) docker run -it --name mailcow-backup --rm \ -v ${RESTORE_LOCATION}:/backup:z \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_postfix-vol-1$):/postfix:z \ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_postfix.tar.gz docker start $(docker ps -aqf name=postfix-mailcow) ;; @@ -231,14 +231,14 @@ function restore() { #docker stop $(docker ps -qf name=mysql-mailcow) if [[ -d "${RESTORE_LOCATION}/mysql" ]]; then docker run --name mailcow-backup --rm \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:rw,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_mysql-vol-1$):/var/lib/mysql/:rw,z \ --entrypoint= \ -v ${RESTORE_LOCATION}/mysql:/backup:z \ ${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; /bin/rm -rf /var/lib/mysql/* ; rsync -avh --usermap=root:mysql --groupmap=root:mysql /backup/ /var/lib/mysql/" elif [[ -f "${RESTORE_LOCATION}/backup_mysql.gz" ]]; then docker run \ -it --name mailcow-backup --rm \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/var/lib/mysql/:z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_mysql-vol-1$):/var/lib/mysql/:z \ --entrypoint= \ -u mysql \ -v ${RESTORE_LOCATION}:/backup:z \ @@ -249,7 +249,7 @@ function restore() { mysql -uroot -e SHUTDOWN;" elif [[ -f "${RESTORE_LOCATION}/backup_mariadb.tar.gz" ]]; then docker run --name mailcow-backup --rm \ - -v $(docker volume ls -qf name=${CMPS_PRJ}_mysql-vol-1):/backup_mariadb/:rw,z \ + -v $(docker volume ls -qf name=^${CMPS_PRJ}_mysql-vol-1$):/backup_mariadb/:rw,z \ --entrypoint= \ -v ${RESTORE_LOCATION}:/backup:z \ ${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; \