|
@@ -1,5 +1,7 @@
|
|
#!/usr/bin/env bash
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
+DEBIAN_DOCKER_IMAGE="debian:buster-slim"
|
|
|
|
+
|
|
if [[ ! -z ${MAILCOW_BACKUP_LOCATION} ]]; then
|
|
if [[ ! -z ${MAILCOW_BACKUP_LOCATION} ]]; then
|
|
BACKUP_LOCATION="${MAILCOW_BACKUP_LOCATION}"
|
|
BACKUP_LOCATION="${MAILCOW_BACKUP_LOCATION}"
|
|
fi
|
|
fi
|
|
@@ -79,32 +81,32 @@ function backup() {
|
|
docker run --name mailcow-backup --rm \
|
|
docker run --name mailcow-backup --rm \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:ro \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail:ro \
|
|
- debian:stretch-slim /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_vmail.tar.gz /vmail
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_vmail.tar.gz /vmail
|
|
;;&
|
|
;;&
|
|
crypt|all)
|
|
crypt|all)
|
|
docker run --name mailcow-backup --rm \
|
|
docker run --name mailcow-backup --rm \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:ro \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt:ro \
|
|
- debian:stretch-slim /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_crypt.tar.gz /crypt
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_crypt.tar.gz /crypt
|
|
;;&
|
|
;;&
|
|
redis|all)
|
|
redis|all)
|
|
docker exec $(docker ps -qf name=redis-mailcow) redis-cli save
|
|
docker exec $(docker ps -qf name=redis-mailcow) redis-cli save
|
|
docker run --name mailcow-backup --rm \
|
|
docker run --name mailcow-backup --rm \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:ro \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis:ro \
|
|
- debian:stretch-slim /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_redis.tar.gz /redis
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_redis.tar.gz /redis
|
|
;;&
|
|
;;&
|
|
rspamd|all)
|
|
rspamd|all)
|
|
docker run --name mailcow-backup --rm \
|
|
docker run --name mailcow-backup --rm \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:ro \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd:ro \
|
|
- debian:stretch-slim /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_rspamd.tar.gz /rspamd
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_rspamd.tar.gz /rspamd
|
|
;;&
|
|
;;&
|
|
postfix|all)
|
|
postfix|all)
|
|
docker run --name mailcow-backup --rm \
|
|
docker run --name mailcow-backup --rm \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v ${BACKUP_LOCATION}/mailcow-${DATE}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:ro \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix:ro \
|
|
- debian:stretch-slim /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_postfix.tar.gz /postfix
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar --warning='no-file-ignored' --use-compress-program="gzip --rsyncable --best" -Pcvpf /backup/backup_postfix.tar.gz /postfix
|
|
;;&
|
|
;;&
|
|
mysql|all)
|
|
mysql|all)
|
|
SQLIMAGE=$(grep -iEo '(mysql|mariadb)\:.+' ${COMPOSE_FILE})
|
|
SQLIMAGE=$(grep -iEo '(mysql|mariadb)\:.+' ${COMPOSE_FILE})
|
|
@@ -152,7 +154,7 @@ function restore() {
|
|
docker run -it --name mailcow-backup --rm \
|
|
docker run -it --name mailcow-backup --rm \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_vmail-vol-1):/vmail \
|
|
- debian:stretch-slim /bin/tar -Pxvzf /backup/backup_vmail.tar.gz
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_vmail.tar.gz
|
|
docker start $(docker ps -aqf name=dovecot-mailcow)
|
|
docker start $(docker ps -aqf name=dovecot-mailcow)
|
|
echo
|
|
echo
|
|
echo "In most cases it is not required to run a full resync, you can run the command printed below at any time after testing wether the restore process broke a mailbox:"
|
|
echo "In most cases it is not required to run a full resync, you can run the command printed below at any time after testing wether the restore process broke a mailbox:"
|
|
@@ -171,7 +173,7 @@ function restore() {
|
|
docker run -it --name mailcow-backup --rm \
|
|
docker run -it --name mailcow-backup --rm \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_redis-vol-1):/redis \
|
|
- debian:stretch-slim /bin/tar -Pxvzf /backup/backup_redis.tar.gz
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_redis.tar.gz
|
|
docker start $(docker ps -aqf name=redis-mailcow)
|
|
docker start $(docker ps -aqf name=redis-mailcow)
|
|
;;
|
|
;;
|
|
crypt)
|
|
crypt)
|
|
@@ -179,7 +181,7 @@ function restore() {
|
|
docker run -it --name mailcow-backup --rm \
|
|
docker run -it --name mailcow-backup --rm \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_crypt-vol-1):/crypt \
|
|
- debian:stretch-slim /bin/tar -Pxvzf /backup/backup_crypt.tar.gz
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_crypt.tar.gz
|
|
docker start $(docker ps -aqf name=dovecot-mailcow)
|
|
docker start $(docker ps -aqf name=dovecot-mailcow)
|
|
;;
|
|
;;
|
|
rspamd)
|
|
rspamd)
|
|
@@ -187,7 +189,7 @@ function restore() {
|
|
docker run -it --name mailcow-backup --rm \
|
|
docker run -it --name mailcow-backup --rm \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_rspamd-vol-1):/rspamd \
|
|
- debian:stretch-slim /bin/tar -Pxvzf /backup/backup_rspamd.tar.gz
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_rspamd.tar.gz
|
|
docker start $(docker ps -aqf name=rspamd-mailcow)
|
|
docker start $(docker ps -aqf name=rspamd-mailcow)
|
|
;;
|
|
;;
|
|
postfix)
|
|
postfix)
|
|
@@ -195,7 +197,7 @@ function restore() {
|
|
docker run -it --name mailcow-backup --rm \
|
|
docker run -it --name mailcow-backup --rm \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v ${RESTORE_LOCATION}:/backup \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix \
|
|
-v $(docker volume ls -qf name=${CMPS_PRJ}_postfix-vol-1):/postfix \
|
|
- debian:stretch-slim /bin/tar -Pxvzf /backup/backup_postfix.tar.gz
|
|
|
|
|
|
+ ${DEBIAN_DOCKER_IMAGE} /bin/tar -Pxvzf /backup/backup_postfix.tar.gz
|
|
docker start $(docker ps -aqf name=postfix-mailcow)
|
|
docker start $(docker ps -aqf name=postfix-mailcow)
|
|
;;
|
|
;;
|
|
mysql)
|
|
mysql)
|