Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dovecot_backup_-_skript

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:dovecot_backup_-_skript [2019/10/16 14:55] – [Backup] klaustachtler:dovecot_backup_-_skript [2023/07/05 19:07] (aktuell) – [Dovecot Backup - Skript] klaus
Zeile 12: Zeile 12:
  
 ^ Beschreibung  ^ Externer Link                                                                   ^ ^ Beschreibung  ^ Externer Link                                                                   ^
-| Linux-Magazin | [[http://www.linux-magazin.de/ausgaben/2018/06/backups-von-e-mails/|Wie Admins ihre Mailserver vor Datenverlust schützen]] / {{ :tachtler:protected:054-058_email_backup_v2.pdf |Artikel aus Ausgabe 06/2018}} |+| Linux-Magazin | [[http://www.linux-magazin.de/ausgaben/2018/06/backups-von-e-mails/|Wie Admins ihre Mailserver vor Datenverlust schützen]]\\ [[https://www.linux-magazin.de/ausgaben/2018/06/backups-von-e-mails/4/|Wie Admins ihre Mailserver vor Datenverlust schützen (Seite 4) - Erwähnung]]\\ {{ :tachtler:protected:054-058_email_backup_v2.pdf |Artikel aus Ausgabe 06/2018 - geschützt}} |
 | Homepage      | [[http://dovecot.org|http://dovecot.org]]                                       | | Homepage      | [[http://dovecot.org|http://dovecot.org]]                                       |
 | Dokumentation | [[http://dovecot.org/documentation.html|http://dovecot.org/documentation.html]] | | Dokumentation | [[http://dovecot.org/documentation.html|http://dovecot.org/documentation.html]] |
Zeile 22: Zeile 22:
 Password:  Password: 
 </code> </code>
 +
 +===== Zstandard (zstd) =====
 +
 +Für den Einsatz der Komprimierungsmethode [[https://de.wikipedia.org/wiki/Zstandard|Zstandard (zstd)]] ist es ggf. erforderlich, das Programm **''zstd''** zu installieren.
 +
 +**__CentOS 7__**
 +
 +Zur Installation von [[https://de.wikipedia.org/wiki/Zstandard|Zstandard (zstd)]] über ein **''rpm''**-Paket, soll hier das Repository eines Drittanbieters genutzt werden, da [[https://de.wikipedia.org/wiki/Zstandard|Zstandard (zstd)]] **__nicht__** im [[http://centos.org|CentOS]]-Repository enthalten ist.
 +
 +Nachfolgend soll das Repository des Drittanbieters [[https://fedoraproject.org/wiki/EPEL|EPEL]] genutzt werden. Eine Anleitung, wie das Repository des Drittanbieters [[https://fedoraproject.org/wiki/EPEL|EPEL]] eingebunden werden könnte, kann unter nachfolgendem internen Link nachgelesen werden:
 +  * [[tachtler:epel_centos_7|EPEL CentOS 7]]
 +
 +Zur Installation der Komprimierungsmethode [[https://de.wikipedia.org/wiki/Zstandard|Zstandard (zstd)]] wird nachfolgendes Paket benötigt:
 +  * **''zstd''** - ist im ''epel''-Repository des Drittanbieters [[https://fedoraproject.org/wiki/EPEL|EPEL]] enthalten
 +
 +Mit nachfolgendem Befehl, werden die benötigten Pakete installiert:
 +<code>
 +# yum install zstd
 +Loaded plugins: changelog, priorities
 +234 packages excluded due to repository priority protections
 +Resolving Dependencies
 +--> Running transaction check
 +---> Package zstd.x86_64 0:1.5.0-1.el7 will be installed
 +--> Finished Dependency Resolution
 +
 +Changes in packages about to be updated:
 +
 +
 +Dependencies Resolved
 +
 +================================================================================
 + Package         Arch              Version                Repository       Size
 +================================================================================
 +Installing:
 + zstd            x86_64            1.5.0-1.el7            epel            649 k
 +
 +Transaction Summary
 +================================================================================
 +Install  1 Package
 +
 +Total download size: 649 k
 +Installed size: 2.1 M
 +Is this ok [y/d/N]: y
 +Downloading packages:
 +zstd-1.5.0-1.el7.x86_64.rpm                                | 649 kB   00:00     
 +Running transaction check
 +Running transaction test
 +Transaction test succeeded
 +Running transaction
 +  Installing : zstd-1.5.0-1.el7.x86_64                                      1/1 
 +  Verifying  : zstd-1.5.0-1.el7.x86_64                                      1/1 
 +
 +Installed:
 +  zstd.x86_64 0:1.5.0-1.el7                                                     
 +
 +Complete!
 +</code>
 +
 +Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalt mit dem Paket installiert wurde.
 +
 +Paket **zstd**:
 +<code>
 +# rpm -qil zstd
 +Name        : zstd
 +Version     : 1.5.0
 +Release     : 1.el7
 +Architecture: x86_64
 +Install Date: Sat 02 Oct 2021 07:40:55 AM CEST
 +Group       : Unspecified
 +Size        : 2178120
 +License     : BSD and GPLv2
 +Signature   : RSA/SHA256, Mon 17 May 2021 03:12:58 AM CEST, Key ID 6a2faea2352c64e5
 +Source RPM  : zstd-1.5.0-1.el7.src.rpm
 +Build Date  : Sun 16 May 2021 10:13:19 PM CEST
 +Build Host  : buildhw-x86-12.iad2.fedoraproject.org
 +Relocations : (not relocatable)
 +Packager    : Fedora Project
 +Vendor      : Fedora Project
 +URL         : https://github.com/facebook/zstd
 +Bug URL     : https://bugz.fedoraproject.org/zstd
 +Summary     : Zstd compression library
 +Description :
 +Zstd, short for Zstandard, is a fast lossless compression algorithm,
 +targeting real-time compression scenarios at zlib-level compression ratio.
 +/usr/bin/pzstd
 +/usr/bin/unzstd
 +/usr/bin/zstd
 +/usr/bin/zstdcat
 +/usr/bin/zstdgrep
 +/usr/bin/zstdless
 +/usr/bin/zstdmt
 +/usr/share/doc/zstd-1.5.0
 +/usr/share/doc/zstd-1.5.0/CHANGELOG
 +/usr/share/doc/zstd-1.5.0/README.md
 +/usr/share/licenses/zstd-1.5.0
 +/usr/share/licenses/zstd-1.5.0/COPYING
 +/usr/share/licenses/zstd-1.5.0/LICENSE
 +/usr/share/man/man1/pzstd.1.gz
 +/usr/share/man/man1/unzstd.1.gz
 +/usr/share/man/man1/zstd.1.gz
 +/usr/share/man/man1/zstdcat.1.gz
 +/usr/share/man/man1/zstdgrep.1.gz
 +/usr/share/man/man1/zstdless.1.gz
 +</code>
 +
 +
  
 ===== Backup ===== ===== Backup =====
  
-Nachfolgendes Skript ermöglicht die Erstellung einer ***.tar.gz**-Datei +Nachfolgendes Skript ermöglicht die Erstellung einer ***.tar.gz**-Datei oder eine ***.tar.zst**-Datei
   * von **__allen__** Benutzerkonten   * von **__allen__** Benutzerkonten
   * **__oder__** über **__eine Datei mit E-Mail-Adressen__**, der zu sichernden Benutzerkonten   * **__oder__** über **__eine Datei mit E-Mail-Adressen__**, der zu sichernden Benutzerkonten
-  * pro **__Benutzer eine eigene *.tar.gz-Datei__**+  * pro **__Benutzer eine eigene *.tar.gz-Datei oder *.tar.zst-Datei__**
   * auf **__Dateiebene__**   * auf **__Dateiebene__**
   * mit **__konfigurierbaren Parametern__**   * mit **__konfigurierbaren Parametern__**
Zeile 44: Zeile 150:
 # CUSTOM - Script-Name. # CUSTOM - Script-Name.
 SCRIPT_NAME='dovecot_backup' SCRIPT_NAME='dovecot_backup'
 +
 +# CUSTOM - Backup-Files compression method - (possible values: gz zst).
 +COMPRESSION='gz'
  
 # CUSTOM - Backup-Files. # CUSTOM - Backup-Files.
 TMP_FOLDER='/srv/backup' TMP_FOLDER='/srv/backup'
 DIR_BACKUP='/srv/backup' DIR_BACKUP='/srv/backup'
-FILE_BACKUP=dovecot_backup_`date '+%Y%m%d_%H%M%S'`.tar.gz +FILE_BACKUP=dovecot_backup_`date '+%Y%m%d_%H%M%S'`.tar.$COMPRESSION 
-FILE_DELETE='*.tar.gz'+FILE_DELETE=$(printf '*.tar.%s$COMPRESSION)
 BACKUPFILES_DELETE=14 BACKUPFILES_DELETE=14
  
Zeile 60: Zeile 169:
 # CUSTOM - Path and file name of a file with e-mail addresses to backup, if # CUSTOM - Path and file name of a file with e-mail addresses to backup, if
 #          SET. If NOT, the script will determine all mailboxes by default. #          SET. If NOT, the script will determine all mailboxes by default.
-# FILE_USERLIST='/path/and/file/name/of/user/list/with/one/email/per/line'+# FILE_USERLIST='/path/and/file/name/of/user/list/with/one/user/per/line'
 # - OR - # - OR -
 # FILE_USERLIST='' # FILE_USERLIST=''
Zeile 70: Zeile 179:
  
 # CUSTOM - Mail-Recipient. # CUSTOM - Mail-Recipient.
-MAIL_RECIPIENT='root@tachtler.net'+MAIL_RECIPIENT='you@example.com'
  
 # CUSTOM - Status-Mail [Y|N]. # CUSTOM - Status-Mail [Y|N].
Zeile 83: Zeile 192:
 ^ Parametername          ^ Beschreibung                                                                            ^ ^ Parametername          ^ Beschreibung                                                                            ^
 | ''SCRIPT_NAME''        | Name des Skriptes                                                                       | | ''SCRIPT_NAME''        | Name des Skriptes                                                                       |
-| ''TMP_FOLDER''         | Verzeichnis in dem ein temporärer Ordner erstellt werden soll, um die Backup-Dateien temporär zu extrahiert, damit diese dann abschließend in ein Archivformat (tar.gz) zu packen                            |+| ''COMPRESSION''        | Art der zu verwendenden Komprimierungsmethode, je nach **Endung** (''zst'' = **''zstd''** oder ''gz'' = **''gzip''**) | 
 +| ''TMP_FOLDER''         | Verzeichnis in dem ein temporärer Ordner erstellt werden soll, um die Backup-Dateien temporär zu extrahiert, damit diese dann abschliessend in ein Archivformat (tar.gz) zu packen                            |
 | ''DIR_BACKUP''         | Verzeichnis in dem die Backup-Dateien abgelegt werden sollen                            | | ''DIR_BACKUP''         | Verzeichnis in dem die Backup-Dateien abgelegt werden sollen                            |
 | ''FILE_BACKUP''        | **Allgemeiner Teil** der Bezeichnung für die Backup-Dateien                             | | ''FILE_BACKUP''        | **Allgemeiner Teil** der Bezeichnung für die Backup-Dateien                             |
Zeile 119: Zeile 229:
  
 <code bash> <code bash>
-#!/bin/bash+#!/usr/bin/env bash
  
 ############################################################################## ##############################################################################
Zeile 128: Zeile 238:
 #               will be send by e-mail.                                      # #               will be send by e-mail.                                      #
 #                                                                            # #                                                                            #
-# Last update : 08.10.2019                                                   # +# Last update : 03.07.2023                                                   # 
-# Version     : 1.11                                                         #+# Version     : 1.20                                                         #
 #                                                                            # #                                                                            #
 # Author      : Klaus Tachtler, <klaus@tachtler.net>                         # # Author      : Klaus Tachtler, <klaus@tachtler.net>                         #
Zeile 138: Zeile 248:
 #  | This program is free software; you can redistribute it and/or modify |  # #  | This program is free software; you can redistribute it and/or modify |  #
 #  | it under the terms of the GNU General Public License as published by |  # #  | it under the terms of the GNU General Public License as published by |  #
-#  | the Free Software Foundation; either version of the License, or    |  #+#  | the Free Software Foundation; either version of the License, or    |  #
 #  | (at your option) any later version.                                  |  # #  | (at your option) any later version.                                  |  #
 #  +----------------------------------------------------------------------+  # #  +----------------------------------------------------------------------+  #
 #                                                                            # #                                                                            #
-# Copyright (c) 2019 by Klaus Tachtler.                                      #+# Copyright (c) 2023 by Klaus Tachtler.                                      #
 #                                                                            # #                                                                            #
 ############################################################################## ##############################################################################
Zeile 220: Zeile 330:
 #               an NFS mounted storage.                                      # #               an NFS mounted storage.                                      #
 #               Thanks to Krisztián Hamar.                                   # #               Thanks to Krisztián Hamar.                                   #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.12                                                         #
 +# Description : GitHub: Issue #13                                            #
 +#               Change in mv command detection due to initial problems with  #
 +#               Ubuntu 18.04 LTS.                                            #
 +#               Thanks to hatted.                                            #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.13                                                         #
 +# Description : GitHub: Issue #16                                            #
 +#               Changed the timezone format to hours: for example (+0100) at #
 +#               VAR_EMAILDATE, because not all e-Mail user interfaces can    #
 +#               handle the letter time zone notation.                        #
 +#               Thanks to velzebop.                                          #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.14                                                         #
 +# Description : GitHub: Issue #18                                            #
 +#               Add dash '-' and dot '.' to the list of valid chars for the  #
 +#               e-Mail address validation for the localpart and the          #
 +#               domainpart.                                                  #
 +#               Thanks to Henrocker.                                         #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.15                                                         #
 +# Description : GitHub: Issue #21                                            #
 +#               Set the required ownership on TMP_FOLDER before running the  #
 +#               script.                                                      #
 +#               Thanks to LarsBel.                                           #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.16                                                         #
 +# Description : Optimize ownership settings for TMP_FOLDER and DIR_BACKUP.   #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.17                                                         #
 +# Description : GitHub: Issue #22.                                           #
 +#               Bugfix - movelog does not work properly when an email is to  #
 +#               be sent due to an error, or a status email has been          #
 +#               requested.                                                   #
 +#               Thanks to selbitschka.                                       #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.18                                                         #
 +# Description : Introduction of zstd compression as an alternative choice to #
 +#               gzip compression. So now by setting the variable COMPRESSION #
 +#               the type of compression can be selected between zst and gz.  #
 +#               The zstd compression can lower the execution time by half.   #
 +#               The design of the code was also revised.                     #
 +#               The error handling was also been improved.                   #
 +#               Thanks to Marco De Lellis.                                   #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.19                                                         #
 +# Description : GitHub: Issue #24                                            #
 +#               Correct the license mismatch between GitHub and the script.  #
 +#               Thanks to David Haerdeman (Alphix).                          #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.20                                                         #
 +# Description : GitHub: Pull request #26                                     #
 +#               Improved FreeBSD compatibility.                              #
 +#               Thanks to wombelix (Dominik Wombacher)                       #
 # -------------------------------------------------------------------------- # # -------------------------------------------------------------------------- #
 # Version     : x.xx                                                         # # Version     : x.xx                                                         #
Zeile 232: Zeile 397:
 # CUSTOM - Script-Name. # CUSTOM - Script-Name.
 SCRIPT_NAME='dovecot_backup' SCRIPT_NAME='dovecot_backup'
 +
 +# CUSTOM - Backup-Files compression method - (possible values: gz zst).
 +COMPRESSION='gz'
  
 # CUSTOM - Backup-Files. # CUSTOM - Backup-Files.
 TMP_FOLDER='/srv/backup' TMP_FOLDER='/srv/backup'
 DIR_BACKUP='/srv/backup' DIR_BACKUP='/srv/backup'
-FILE_BACKUP=dovecot_backup_`date '+%Y%m%d_%H%M%S'`.tar.gz +FILE_BACKUP=dovecot_backup_`date '+%Y%m%d_%H%M%S'`.tar.$COMPRESSION 
-FILE_DELETE='*.tar.gz'+FILE_DELETE=$(printf '*.tar.%s$COMPRESSION)
 BACKUPFILES_DELETE=14 BACKUPFILES_DELETE=14
  
Zeile 268: Zeile 436:
  
 # Variables. # Variables.
-DSYNC_COMMAND=`command -v dsync` 
 TAR_COMMAND=`command -v tar` TAR_COMMAND=`command -v tar`
 +GZIP_COMMAND=`command -v gzip`
 +ZSTD_COMMAND=`command -v zstd`
 TOUCH_COMMAND=`command -v touch` TOUCH_COMMAND=`command -v touch`
 RM_COMMAND=`command -v rm` RM_COMMAND=`command -v rm`
Zeile 280: Zeile 449:
 MKTEMP_COMMAND=`command -v mktemp` MKTEMP_COMMAND=`command -v mktemp`
 GREP_COMMAND=`command -v grep` GREP_COMMAND=`command -v grep`
-MV_COMMAND=`which --skip-alias mv`+MV_COMMAND=`command which mv` 
 +STAT_COMMAND=`command -v stat`
 FILE_LOCK='/tmp/'$SCRIPT_NAME'.lock' FILE_LOCK='/tmp/'$SCRIPT_NAME'.lock'
 FILE_LOG='/var/log/'$SCRIPT_NAME'.log' FILE_LOG='/var/log/'$SCRIPT_NAME'.log'
Zeile 288: Zeile 458:
 VAR_HOSTNAME=`uname -n` VAR_HOSTNAME=`uname -n`
 VAR_SENDER='root@'$VAR_HOSTNAME VAR_SENDER='root@'$VAR_HOSTNAME
-VAR_EMAILDATE=`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%Z)'`+VAR_EMAILDATE=`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%z)'`
 declare -a VAR_LISTED_USER=() declare -a VAR_LISTED_USER=()
 declare -a VAR_FAILED_USER=() declare -a VAR_FAILED_USER=()
 VAR_COUNT_USER=0 VAR_COUNT_USER=0
 VAR_COUNT_FAIL=0 VAR_COUNT_FAIL=0
 +
 +# FreeBSD specific commands
 +if [ "$OSTYPE" = "FreeBSD" ]; then
 +        DSYNC_COMMAND=`command -v doveadm`
 +        STAT_COMMAND_PARAM_FORMAT='-f'
 +        STAT_COMMAND_ARG_FORMAT_USER='%Su'
 +        STAT_COMMAND_ARG_FORMAT_GROUP='%Sg'
 +        MKTEMP_COMMAND_PARAM_ARG="-d ${TMP_FOLDER}/${SCRIPT_NAME}-XXXXXXXXXXXX"
 +else
 + DSYNC_COMMAND=`command -v dsync`
 +        STAT_COMMAND_PARAM_FORMAT='-c'
 +        STAT_COMMAND_ARG_FORMAT_USER='%U'
 +        STAT_COMMAND_ARG_FORMAT_GROUP='%G'
 +        MKTEMP_COMMAND_PARAM_ARG="-d -p ${TMP_FOLDER} -t ${SCRIPT_NAME}-XXXXXXXXXXXX"
 +fi
  
 # Functions. # Functions.
Zeile 413: Zeile 598:
 log "" log ""
 RUN_TIMESTAMP=`$DATE_COMMAND '+%s'` RUN_TIMESTAMP=`$DATE_COMMAND '+%s'`
-headerblock "Start backup of the mailboxes [`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%Z)'`]"+headerblock "Start backup of the mailboxes [`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%z)'`]"
 log "" log ""
 log "SCRIPT_NAME.................: $SCRIPT_NAME" log "SCRIPT_NAME.................: $SCRIPT_NAME"
 +log ""
 +log "OS_TYPE.....................: $OSTYPE"
 +log ""
 +log "COMPRESSION.................: $COMPRESSION"
 log "" log ""
 log "TMP_FOLDER..................: $TMP_FOLDER" log "TMP_FOLDER..................: $TMP_FOLDER"
Zeile 426: Zeile 615:
 log "FILE_USERLIST_VALIDATE_EMAIL: $FILE_USERLIST_VALIDATE_EMAIL" log "FILE_USERLIST_VALIDATE_EMAIL: $FILE_USERLIST_VALIDATE_EMAIL"
 log "" log ""
 +
 +# Check if compress extension is allowed.
 +if [[ $COMPRESSION != 'zst' && $COMPRESSION != 'gz' ]]; then
 +        logline "Check compression extension" false
 +        log ""
 +        log "ERROR: Compression extension $COMPRESSION unsupported: choose between gz and zst"
 +        log ""
 +        error 19
 +fi
  
 # Check if command (file) NOT exist OR IS empty. # Check if command (file) NOT exist OR IS empty.
Zeile 440: Zeile 638:
 checkcommand $MKTEMP_COMMAND checkcommand $MKTEMP_COMMAND
 checkcommand $MV_COMMAND checkcommand $MV_COMMAND
 +checkcommand $STAT_COMMAND
 checkcommand $PROG_SENDMAIL checkcommand $PROG_SENDMAIL
 +
 +if [ $COMPRESSION = 'gz' ]; then
 +        checkcommand $GZIP_COMMAND
 +fi
 +
 +if [ $COMPRESSION = 'zst' ]; then
 +        checkcommand $ZSTD_COMMAND
 +fi
  
 # Check if LOCK file NOT exist. # Check if LOCK file NOT exist.
Zeile 455: Zeile 662:
 fi fi
  
-# Check if DIR_BACKUP directory NOT exists.+# Check if TMP_FOLDER directory path NOT exists, else create it. 
 +if [ ! -d "$TMP_FOLDER" ]; then 
 +        logline "Check if TMP_FOLDER exists " false 
 + $MKDIR_COMMAND -p $TMP_FOLDER 
 + if [ "$?" != "0" ]; then 
 + logline "Create temporary '$TMP_FOLDER' folder " false 
 + error 21 
 + else 
 + logline "Create temporary '$TMP_FOLDER' folder " true 
 + fi 
 +else 
 +        logline "Check if TMP_FOLDER exists " true 
 +fi 
 + 
 +# Check if TMP_FOLDER is owned by $MAILDIR_USER. 
 +if [ "$MAILDIR_USER" != `$STAT_COMMAND $STAT_COMMAND_PARAM_FORMAT "$STAT_COMMAND_ARG_FORMAT_USER" $TMP_FOLDER` ]; then 
 +        logline "Check if TMP_FOLDER owner is $MAILDIR_USER " false 
 + $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $TMP_FOLDER 
 + if [ "$?" != "0" ]; then 
 +        logline "Set ownership of TMP_FOLDER to $MAILDIR_USER:$MAILDIR_GROUP " false 
 + error 22 
 + else 
 +        logline "Set ownership of TMP_FOLDER to $MAILDIR_USER:$MAILDIR_GROUP " true 
 + fi 
 +else 
 +        logline "Check if TMP_FOLDER owner is $MAILDIR_USER " true 
 +fi 
 + 
 +# Check if TMP_FOLDER group is $MAILDIR_GROUP. 
 +if [ "$MAILDIR_GROUP" != `$STAT_COMMAND $STAT_COMMAND_PARAM_FORMAT "$STAT_COMMAND_ARG_FORMAT_GROUP" $TMP_FOLDER` ]; then 
 +        logline "Check if TMP_FOLDER group is $MAILDIR_GROUP " false 
 + $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $TMP_FOLDER 
 + if [ "$?" != "0" ]; then 
 +        logline "Set ownership of TMP_FOLDER to $MAILDIR_USER:$MAILDIR_GROUP " false 
 + error 23 
 + else 
 +        logline "Set ownership of TMP_FOLDER to $MAILDIR_USER:$MAILDIR_GROUP " true 
 + fi 
 +else 
 +        logline "Check if TMP_FOLDER group is $MAILDIR_GROUP " true 
 +fi 
 + 
 +# Check if DIR_BACKUP directory NOT exists, else create it.
 if [ ! -d "$DIR_BACKUP" ]; then if [ ! -d "$DIR_BACKUP" ]; then
         logline "Check if DIR_BACKUP exists " false         logline "Check if DIR_BACKUP exists " false
  $MKDIR_COMMAND -p $DIR_BACKUP  $MKDIR_COMMAND -p $DIR_BACKUP
  if [ "$?" != "0" ]; then  if [ "$?" != "0" ]; then
-        logline "DIR_BACKUP was NOT created " false + logline "Create backup '$DIR_BACKUP' folder " false 
- error 21+ error 24
  else  else
-        logline "DIR_BACKUP was now created " true+ logline "Create backup '$DIR_BACKUP' folder " true
  fi  fi
 else else
         logline "Check if DIR_BACKUP exists " true         logline "Check if DIR_BACKUP exists " true
 +fi
 +
 +# Check if DIR_BACKUP is owned by $MAILDIR_USER.
 +if [ "$MAILDIR_USER" != `$STAT_COMMAND $STAT_COMMAND_PARAM_FORMAT "$STAT_COMMAND_ARG_FORMAT_USER" $DIR_BACKUP` ]; then
 +        logline "Check if DIR_BACKUP owner is $MAILDIR_USER " false
 + $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_BACKUP
 + if [ "$?" != "0" ]; then
 +        logline "Set ownership of DIR_BACKUP to $MAILDIR_USER:$MAILDIR_GROUP " false
 + error 25
 + else
 +        logline "Set ownership of DIR_BACKUP to $MAILDIR_USER:$MAILDIR_GROUP " true
 + fi
 +else
 +        logline "Check if DIR_BACKUP owner is $MAILDIR_USER " true
 +fi
 +
 +# Check if DIR_BACKUP group is $MAILDIR_GROUP.
 +if [ "$MAILDIR_GROUP" != `$STAT_COMMAND $STAT_COMMAND_PARAM_FORMAT "$STAT_COMMAND_ARG_FORMAT_GROUP" $DIR_BACKUP` ]; then
 +        logline "Check if DIR_BACKUP group is $MAILDIR_GROUP " false
 + $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_BACKUP
 + if [ "$?" != "0" ]; then
 +        logline "Set ownership of DIR_BACKUP to $MAILDIR_USER:$MAILDIR_GROUP " false
 + error 26
 + else
 +        logline "Set ownership of DIR_BACKUP to $MAILDIR_USER:$MAILDIR_GROUP " true
 + fi
 +else
 +        logline "Check if DIR_BACKUP group is $MAILDIR_GROUP " true
 fi fi
  
Zeile 508: Zeile 785:
  if [ $FILE_USERLIST_VALIDATE_EMAIL = 'Y' ]; then  if [ $FILE_USERLIST_VALIDATE_EMAIL = 'Y' ]; then
  # Check if basic email address syntax is valid.  # Check if basic email address syntax is valid.
- if echo "${line}" | $GREP_COMMAND '^[a-zA-Z0-9]*@[a-zA-Z0-9]*\.[a-zA-Z0-9]*$' >/dev/null; then+ if echo "${line}" | $GREP_COMMAND '^[a-zA-Z0-9.-]*@[a-zA-Z0-9.-]*\.[a-zA-Z0-9]*$' >/dev/null; then
  VAR_LISTED_USER+=($line);  VAR_LISTED_USER+=($line);
  else  else
Zeile 532: Zeile 809:
 headerblock "Run backup $SCRIPT_NAME " headerblock "Run backup $SCRIPT_NAME "
 log "" log ""
- 
-# Check if TMP_FOLDER directory path NOT exists, else create it. 
-if [ ! -d "$TMP_FOLDER" ]; then 
-        logline "Check if TMP_FOLDER exists " false 
- $MKDIR_COMMAND -p $TMP_FOLDER 
- if [ "$?" != "0" ]; then 
- logline "Create temporary '$TMP_FOLDER' folder " false 
- error 40 
- else 
- logline "Create temporary '$TMP_FOLDER' folder " true 
- fi 
-else 
-        logline "Check if TMP_FOLDER exists " true 
-fi 
  
 # Make temporary directory DIR_TEMP inside TMP_FOLDER. # Make temporary directory DIR_TEMP inside TMP_FOLDER.
-DIR_TEMP=$($MKTEMP_COMMAND -d -p $TMP_FOLDER -t $SCRIPT_NAME-XXXXXXXXXXXX)+DIR_TEMP=$($MKTEMP_COMMAND $MKTEMP_COMMAND_PARAM_ARG)
 if [ "$?" != "0" ]; then if [ "$?" != "0" ]; then
  logline "Create temporary '$DIR_TEMP' folder " false  logline "Create temporary '$DIR_TEMP' folder " false
- error 41+ error 40
 else else
  logline "Create temporary '$DIR_TEMP' folder " true  logline "Create temporary '$DIR_TEMP' folder " true
Zeile 557: Zeile 820:
 fi fi
  
-# Set rights permissions to DIR_TEMP.+# Set ownership to DIR_TEMP.
 $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_TEMP $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_TEMP
 +if [ "$?" != "0" ]; then
 +        logline "Set ownership of DIR_TEMP to $MAILDIR_USER:$MAILDIR_GROUP " false
 + error 41
 +else
 +        logline "Set ownership of DIR_TEMP to $MAILDIR_USER:$MAILDIR_GROUP " true
 + log ""
 +fi
  
 # Start real backup process for all users. # Start real backup process for all users.
Zeile 571: Zeile 841:
  
  log "Extract mailbox data for user: $users ..."  log "Extract mailbox data for user: $users ..."
- $DSYNC_COMMAND -o plugin/quota= -f -u $users backup $MAILDIR_TYPE:$LOCATION+ 
 +        if [ "$OSTYPE" = "FreeBSD" ]; then 
 +         $DSYNC_COMMAND -o plugin/quota= backup -u $users $MAILDIR_TYPE:$LOCATION 
 + else 
 + $DSYNC_COMMAND -o plugin/quota= -f -u $users backup $MAILDIR_TYPE:$LOCATION 
 + fi
  
  # Check the status of dsync and continue the script depending on the result.  # Check the status of dsync and continue the script depending on the result.
Zeile 593: Zeile 868:
  
  log "Packaging to archive for user: $users ..."  log "Packaging to archive for user: $users ..."
- $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART --atime-preserve --preserve-permissions+ if [ "$OSTYPE" = "FreeBSD" ]; then 
 + $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART 
 + else 
 + $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART --atime-preserve --preserve-permissions 
 + fi
  
  log "Delete mailbox files for user: $users ..."  log "Delete mailbox files for user: $users ..."
- $RM_COMMAND "$DIR_TEMP/$DOMAINPART" -rf+ $RM_COMMAND -rf "$DIR_TEMP/$DOMAINPART"
  if [ "$?" != "0" ]; then  if [ "$?" != "0" ]; then
         logline "Delete mailbox files at: $DIR_TEMP " false         logline "Delete mailbox files at: $DIR_TEMP " false
Zeile 627: Zeile 906:
  
 # Delete the temporary folder DIR_TEMP. # Delete the temporary folder DIR_TEMP.
-$RM_COMMAND $DIR_TEMP -rf+$RM_COMMAND -rf $DIR_TEMP
 if [ "$?" != "0" ]; then if [ "$?" != "0" ]; then
  logline "Delete temporary '$DIR_TEMP' folder " false  logline "Delete temporary '$DIR_TEMP' folder " false
Zeile 636: Zeile 915:
 fi fi
  
-# Set owner and rights permissions to backup directory and backup files.+# Set ownership to backup directory, again.
 $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_BACKUP $CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_BACKUP
 +if [ "$?" != "0" ]; then
 +        logline "Set ownership of DIR_BACKUP to $MAILDIR_USER:$MAILDIR_GROUP " false
 + error 43
 +else
 +        logline "Set ownership of DIR_BACKUP to $MAILDIR_USER:$MAILDIR_GROUP " true
 +fi
 +
 +# Set rights permission to backup directory.
 $CHMOD_COMMAND 700 $DIR_BACKUP $CHMOD_COMMAND 700 $DIR_BACKUP
 +if [ "$?" != "0" ]; then
 +        logline "Set permission of DIR_BACKUP to drwx------ " false
 + error 44
 +else
 +        logline "Set permission of DIR_BACKUP to drwx------ " true
 +fi
 +
 +# Set rights permissions to backup files.
 $CHMOD_COMMAND -R 600 $DIR_BACKUP/* $CHMOD_COMMAND -R 600 $DIR_BACKUP/*
 +if [ "$?" != "0" ]; then
 +        logline "Set file permissions in DIR_BACKUP to -rw------- " false
 + error 45
 +else
 +        logline "Set file permissions in DIR_BACKUP to -rw------- " true
 + log ""
 +fi
  
 # Delete LOCK file. # Delete LOCK file.
Zeile 668: Zeile 970:
 log "" log ""
 END_TIMESTAMP=`$DATE_COMMAND '+%s'` END_TIMESTAMP=`$DATE_COMMAND '+%s'`
-log "Runtime: `$DATE_COMMAND -u -d "0 $END_TIMESTAMP seconds - $RUN_TIMESTAMP seconds" +'%H:%M:%S'` time elapsed."+if [ "$OSTYPE" = "FreeBSD" ]; then 
 +        DELTA=$((END_TIMESTAMP-RUN_TIMESTAMP)) 
 +        log "$(printf 'Runtime: %02d:%02d:%02d time elapsed.\n' $((DELTA/3600)) $((DELTA%3600/60)) $((DELTA%60)))" 
 +else 
 + log "Runtime: `$DATE_COMMAND -u -d "0 $END_TIMESTAMP seconds - $RUN_TIMESTAMP seconds" +'%H:%M:%S'` time elapsed." 
 +fi
 log "" log ""
-headerblock "Finished creating the backups [`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%Z)'`]"+headerblock "Finished creating the backups [`$DATE_COMMAND '+%a, %d %b %Y %H:%M:%S (%z)'`]"
 log "" log ""
  
Zeile 676: Zeile 983:
 if [ "$VAR_COUNT_FAIL" -gt "0" ]; then if [ "$VAR_COUNT_FAIL" -gt "0" ]; then
         sendmail ERROR         sendmail ERROR
 + # Move the log to the permanent log file.
  movelog  movelog
  exit 1  exit 1
Zeile 683: Zeile 991:
         sendmail STATUS         sendmail STATUS
  fi  fi
 + # Move the log to the permanent log file.
  movelog  movelog
  exit 0  exit 0
Zeile 719: Zeile 1028:
 **__OHNE__ ''FILE_USERLIST'':** **__OHNE__ ''FILE_USERLIST'':**
 <code> <code>
-2019/01/30 14:24:28  INFO: +-----------------------------------------------------------------+ +/root/Install/scripts/dovecot_backup.sh 
-2019/01/30 14:24:28  INFO: | Start backup of the mailboxes [Wed30 Jan 2019 14:24:28 (CET)] | + 
-2019/01/30 14:24:28  INFO: +-----------------------------------------------------------------+ ++-------------------------------------------------------------------+ 
-2019/01/30 14:24:28  INFO: +| Start backup of the mailboxes [Sat02 Oct 2021 08:18:37 (+0200)] | 
-2019/01/30 14:24:28  INFO: SCRIPT_NAME.................: dovecot_backup ++-------------------------------------------------------------------+ 
-2019/01/30 14:24:28  INFO: + 
-2019/01/30 14:24:28  INFO: DIR_BACKUP..................: /srv/backup +SCRIPT_NAME.................: dovecot_backup 
-2019/01/30 14:24:28  INFO: + 
-2019/01/30 14:24:28  INFO: MAIL_RECIPIENT..............: you@example.com +OS_TYPE.....................linux-gnu 
-2019/01/30 14:24:28  INFO: MAIL_STATUS.................:+ 
-2019/01/30 14:24:28  INFO: +COMPRESSION.................gz 
-2019/01/30 14:24:28  INFO: FILE_USERLIST...............:  + 
-2019/01/30 14:24:28  INFO: FILE_USERLIST_VALIDATE_EMAIL:+TMP_FOLDER..................: /srv/backup 
-2019/01/30 14:24:28  INFO: +DIR_BACKUP..................: /srv/backup 
-2019/01/30 14:24:28  INFO: Check if command '/bin/dsync' was found....................[ OK ] + 
-2019/01/30 14:24:28  INFO: Check if command '/bin/tar' was found......................[ OK ] +MAIL_RECIPIENT..............: you@example.com 
-2019/01/30 14:24:28  INFO: Check if command '/bin/touch' was found....................[ OK ] +MAIL_STATUS.................:
-2019/01/30 14:24:28  INFO: Check if command '/bin/rm' was found.......................[ OK ] + 
-2019/01/30 14:24:28  INFO: Check if command '/bin/cat' was found......................[ OK ] +FILE_USERLIST...............: 
-2019/01/30 14:24:28  INFO: Check if command '/bin/date' was found.....................[ OK ] +FILE_USERLIST_VALIDATE_EMAIL:
-2019/01/30 14:24:28  INFO: Check if command '/bin/mkdir' was found....................[ OK ] + 
-2019/01/30 14:24:28  INFO: Check if command '/bin/chown' was found....................[ OK ] +Check if command 'dsync'|'/bin/dsync' was found ...........[ OK ] 
-2019/01/30 14:24:28  INFO: Check if command '/bin/chmod' was found....................[ OK ] +Check if command 'tar'|'/bin/tar' was found ...............[ OK ] 
-2019/01/30 14:24:28  INFO: Check if command '/bin/grep' was found.....................[ OK ] +Check if command 'touch'|'/bin/touch' was found ...........[ OK ] 
-2019/01/30 14:24:28  INFO: Check if command '/sbin/sendmail' was found................[ OK ] +Check if command 'rm'|'/bin/rm' was found .................[ OK ] 
-2019/01/30 14:24:28  INFO: Check if script is NOT already runnig .....................[ OK ] +Check if command 'cat'|'/bin/cat' was found ...............[ OK ] 
-2019/01/30 14:24:28  INFO: Check if DIR_BACKUP exists.................................[ OK ] +Check if command 'date'|'/bin/date' was found .............[ OK ] 
-2019/01/30 14:24:28  INFO: +Check if command 'mkdir'|'/bin/mkdir' was found ...........[ OK ] 
-2019/01/30 14:24:28  INFO: Check if the variable FILE_USERLIST is set.................[ NO ] +Check if command 'chown'|'/bin/chown' was found ...........[ OK ] 
-2019/01/30 14:24:28  INFO: Mailboxes to backup will be determined by doveadm user "*"+Check if command 'chmod'|'/bin/chmod' was found ...........[ OK ] 
-2019/01/30 14:24:28  INFO: +Check if command 'grep'|'/bin/grep' was found .............[ OK ] 
-2019/01/30 14:24:28  INFO: +Check if command 'mktemp'|'/bin/mktemp' was found .........[ OK ] 
-2019/01/30 14:24:28  INFO: +-----------------------------------------------------------------+ +Check if command 'mv'|'/bin/mv' was found .................[ OK ] 
-2019/01/30 14:24:28  INFO: | Run backup dovecot_backup ..................................... | +Check if command 'stat'|'/bin/stat' was found .............[ OK ] 
-2019/01/30 14:24:28  INFO: +-----------------------------------------------------------------+ +Check if command 'sendmail'|'/sbin/sendmail' was found ....[ OK ] 
-2019/01/30 14:24:28  INFO: +Check if command 'gzip'|'/bin/gzip' was found .............[ OK ] 
-2019/01/30 14:24:29  INFO: Start backup process for user: klaus@tachtler.net ... +Check if the script is NOT already runnig .................[ OK ] 
-2019/01/30 14:24:29  INFO: Extract mailbox data for user: klaus@tachtler.net ... +Check if TMP_FOLDER exists ................................[ OK ] 
-2019/01/30 14:27:43  INFO: Synchronization done for user: klaus@tachtler.net ... +Check if TMP_FOLDER owner is vmail ........................[ OK ] 
-2019/01/30 14:27:43  INFO: Packaging to archive for user: klaus@tachtler.net ... +Check if TMP_FOLDER group is vmail ........................[ OK ] 
-2019/01/30 14:27:48  INFO: Delete archive files for user: klaus@tachtler.net ... +Check if DIR_BACKUP exists ................................[ OK ] 
-2019/01/30 14:27:48  INFO: Delete old archive files /srv/backup .....................[ OK ] +Check if DIR_BACKUP owner is vmail ........................[ OK ] 
-2019/01/30 14:27:48  INFO: Delete mailbox files for user: klaus@tachtler.net ... +Check if DIR_BACKUP group is vmail ........................[ OK ] 
-2019/01/30 14:27:48  INFO: Delete mailbox files at: /srv/backup .....................[ OK ] + 
-2019/01/30 14:27:48  INFO: Ended backup process for user: klaus@tachtler.net ... +Check if the variable FILE_USERLIST is set ................[ NO ] 
-2019/01/30 14:27:48  INFO: +Mailboxes to backup will be determined by doveadm user "*"
-2019/01/30 14:27:48  INFO: Start backup process for user: petra@tachtler.net ... + 
-2019/01/30 14:27:48  INFO: Extract mailbox data for user: petra@tachtler.net ... ++-----------------------------------------------------------------+ 
-2019/01/30 14:27:56  INFO: Synchronization done for user: petra@tachtler.net ... +| Run backup dovecot_backup ..................................... | 
-2019/01/30 14:27:56  INFO: Packaging to archive for user: petra@tachtler.net ... ++-----------------------------------------------------------------+ 
-2019/01/30 14:27:57  INFO: Delete archive files for user: petra@tachtler.net ... + 
-2019/01/30 14:27:57  INFO: Delete old archive files /srv/backup .....................[ OK ] +Create temporary '/srv/backup/dovecot_backup-0UCtpQfhdsiH' folder [ OK ] 
-2019/01/30 14:27:57  INFO: Delete mailbox files for user: petra@tachtler.net ... + 
-2019/01/30 14:27:57  INFO: Delete mailbox files at: /srv/backup .....................[ OK ] +Set ownership of DIR_TEMP to vmail:vmail ..................[ OK ] 
-2019/01/30 14:27:57  INFO: Ended backup process for user: petra@tachtler.net ... + 
-2019/01/30 14:28:01  INFO: +Start backup process for user: ... 
-2019/01/30 14:28:01  INFO: +-----------------------------------------------------------------+ +... 
-2019/01/30 14:28:01  INFO: | End backup dovecot_backup ..................................... | +... 
-2019/01/30 14:28:01  INFO: +-----------------------------------------------------------------+ +... 
-2019/01/30 14:28:01  INFO: +... 
-2019/01/30 14:28:01  INFO: +-----------------------------------------------------------------+ +Set ownership of DIR_BACKUP to vmail:vmail ................[ OK ] 
-2019/01/30 14:28:01  INFO: | Runtime statistics............................................. | +Set permission of DIR_BACKUP to drwx------ ................[ OK ] 
-2019/01/30 14:28:01  INFO: +-----------------------------------------------------------------+ +Set file permissions in DIR_BACKUP to -rw------- ..........[ OK ] 
-2019/01/30 14:28:01  INFO: + 
-2019/01/30 14:28:01  INFO: - Number of determined users: 2 ++-----------------------------------------------------------------+ 
-2019/01/30 14:28:01  INFO: - ...Summary of failed users: 0 +| End backup dovecot_backup ..................................... | 
-2019/01/30 14:28:01  INFO: ++-----------------------------------------------------------------+ 
-2019/01/30 14:28:01  INFO: Runtime: 00:03:33 time elapsed. + 
-2019/01/30 14:28:01  INFO: ++-----------------------------------------------------------------+ 
-2019/01/30 14:28:01  INFO: +-----------------------------------------------------------------+ +| Runtime statistics ............................................ | 
-2019/01/30 14:28:01  INFO: | Finished creating the backups [Wed30 Jan 2019 14:28:01 (CET)] | ++-----------------------------------------------------------------+ 
-2019/01/30 14:28:01  INFO: +-----------------------------------------------------------------+ + 
-2019/01/30 14:28:01  INFO:+- Number of determined users: 4 
 +- ...Summary of failed users: 0 
 + 
 +Runtime: 00:01:54 time elapsed. 
 + 
 ++-------------------------------------------------------------------+ 
 +| Finished creating the backups [Sat02 Oct 2021 08:20:31 (+0200)] | 
 ++-------------------------------------------------------------------+ 
 </code> </code>
  
 **__MIT__ ''FILE_USERLIST'':** **__MIT__ ''FILE_USERLIST'':**
 <code> <code>
-2019/01/30 15:07:51  INFO: +-----------------------------------------------------------------+ +/root/Install/scripts/dovecot_backup.sh 
-2019/01/30 15:07:51  INFO: | Start backup of the mailboxes [Wed30 Jan 2019 15:07:51 (CET)] | + 
-2019/01/30 15:07:51  INFO: +-----------------------------------------------------------------+ ++-------------------------------------------------------------------+ 
-2019/01/30 15:07:51  INFO: +| Start backup of the mailboxes [Sat02 Oct 2021 08:06:04 (+0200)] | 
-2019/01/30 15:07:51  INFO: SCRIPT_NAME.................: dovecot_backup ++-------------------------------------------------------------------+ 
-2019/01/30 15:07:51  INFO+ 
-2019/01/30 15:07:51  INFO: DIR_BACKUP..................: /srv/backup +SCRIPT_NAME.................: dovecot_backup 
-2019/01/30 15:07:51  INFO: + 
-2019/01/30 15:07:51  INFO: MAIL_RECIPIENT..............: you@example.com +OS_TYPE.....................linux-gnu 
-2019/01/30 15:07:51  INFO: MAIL_STATUS.................:+ 
-2019/01/30 15:07:51  INFO: +COMPRESSION.................gz 
-2019/01/30 15:07:51  INFO: FILE_USERLIST...............: /srv/dovecot_backup.userlist + 
-2019/01/30 15:07:51  INFO: FILE_USERLIST_VALIDATE_EMAIL: Y +TMP_FOLDER..................: /srv/backup 
-2019/01/30 15:07:51  INFO: +DIR_BACKUP..................: /srv/backup 
-2019/01/30 15:07:51  INFO: Check if command '/bin/dsync' was found....................[ OK ] + 
-2019/01/30 15:07:51  INFO: Check if command '/bin/tar' was found......................[ OK ] +MAIL_RECIPIENT..............: you@example.com 
-2019/01/30 15:07:51  INFO: Check if command '/bin/touch' was found....................[ OK ] +MAIL_STATUS.................:
-2019/01/30 15:07:51  INFO: Check if command '/bin/rm' was found.......................[ OK ] + 
-2019/01/30 15:07:51  INFO: Check if command '/bin/cat' was found......................[ OK ] +FILE_USERLIST...............: /srv/dovecot_backup.userlist 
-2019/01/30 15:07:51  INFO: Check if command '/bin/date' was found.....................[ OK ] +FILE_USERLIST_VALIDATE_EMAIL: N 
-2019/01/30 15:07:51  INFO: Check if command '/bin/mkdir' was found....................[ OK ] + 
-2019/01/30 15:07:51  INFO: Check if command '/bin/chown' was found....................[ OK ] +Check if command 'dsync'|'/bin/dsync' was found ...........[ OK ] 
-2019/01/30 15:07:51  INFO: Check if command '/bin/chmod' was found....................[ OK ] +Check if command 'tar'|'/bin/tar' was found ...............[ OK ] 
-2019/01/30 15:07:51  INFO: Check if command '/bin/grep' was found.....................[ OK ] +Check if command 'touch'|'/bin/touch' was found ...........[ OK ] 
-2019/01/30 15:07:51  INFO: Check if command '/sbin/sendmail' was found................[ OK ] +Check if command 'rm'|'/bin/rm' was found .................[ OK ] 
-2019/01/30 15:07:51  INFO: Check if script is NOT already runnig .....................[ OK ] +Check if command 'cat'|'/bin/cat' was found ...............[ OK ] 
-2019/01/30 15:07:51  INFO: Check if DIR_BACKUP exists.................................[ OK ] +Check if command 'date'|'/bin/date' was found .............[ OK ] 
-2019/01/30 15:07:51  INFO: +Check if command 'mkdir'|'/bin/mkdir' was found ...........[ OK ] 
-2019/01/30 15:07:51  INFO: Check if the variable FILE_USERLIST is set.................[ OK ] +Check if command 'chown'|'/bin/chown' was found ...........[ OK ] 
-2019/01/30 15:07:51  INFO: Mailboxes to backup will read from file. +Check if command 'chmod'|'/bin/chmod' was found ...........[ OK ] 
-2019/01/30 15:07:51  INFO: +Check if command 'grep'|'/bin/grep' was found .............[ OK ] 
-2019/01/30 15:07:51  INFO: - File: [/home/klaus/dovecot_backup.userlist] +Check if command 'mktemp'|'/bin/mktemp' was found .........[ OK ] 
-2019/01/30 15:07:51  INFO: - Check if FILE_USERLIST exists............................[ OK ] +Check if command 'mv'|'/bin/mv' was found .................[ OK ] 
-2019/01/30 15:07:51  INFO: - Check if FILE_USERLIST is readable.......................[ OK ] +Check if command 'stat'|'/bin/stat' was found .............[ OK ] 
-2019/01/30 15:07:51  INFO: +Check if command 'sendmail'|'/sbin/sendmail' was found ....[ OK ] 
-2019/01/30 15:07:51  INFO: ERROR: The user: notvaild_email.net is NOT valid e-mail address! +Check if command 'gzip'|'/bin/gzip' was found .............[ OK ] 
-2019/01/30 15:07:51  INFO: +Check if the script is NOT already runnig .................[ OK ] 
-2019/01/30 15:07:51  INFO: +-----------------------------------------------------------------+ +Check if TMP_FOLDER exists ................................[ OK ] 
-2019/01/30 15:07:51  INFO: | Run backup dovecot_backup ..................................... | +Check if TMP_FOLDER owner is vmail ........................[ OK ] 
-2019/01/30 15:07:51  INFO: +-----------------------------------------------------------------+ +Check if TMP_FOLDER group is vmail ........................[ OK ] 
-2019/01/30 15:07:51  INFO: +Check if DIR_BACKUP exists ................................[ OK ] 
-2019/01/30 15:07:51  INFO: Start backup process for user: klaus@tachtler.net ... +Check if DIR_BACKUP owner is vmail ........................[ OK ] 
-2019/01/30 15:07:51  INFO: Extract mailbox data for user: klaus@tachtler.net ... +Check if DIR_BACKUP group is vmail ........................[ OK ] 
-2019/01/30 15:07:54  INFO: Synchronization done for user: klaus@tachtler.net ... + 
-2019/01/30 15:07:54  INFO: Packaging to archive for user: klaus@tachtler.net ... +Check if the variable FILE_USERLIST is set ................[ OK ] 
-2019/01/30 15:07:54  INFO: Delete archive files for user: klaus@tachtler.net ... +Mailboxes to backup will be read from file. 
-2019/01/30 15:07:54  INFO: Delete old archive files /srv/backup .....................[ OK ] + 
-2019/01/30 15:07:54  INFO: Delete mailbox files for user: klaus@tachtler.net ... +- File: [/srv/dovecot_backup.userlist] 
-2019/01/30 15:07:54  INFO: Delete mailbox files at: /srv/backup .....................[ OK ] +- Check if FILE_USERLIST exists ...........................[ OK ] 
-2019/01/30 15:07:54  INFO: Ended backup process for user: klaus@tachtler.net ... +- Check if FILE_USERLIST is readable ......................[ OK ] 
-2019/01/30 15:07:54  INFO: + 
-2019/01/30 15:07:54  INFO: Start backup process for user: petra@tachtler.net ... ++-----------------------------------------------------------------+ 
-2019/01/30 15:07:54  INFO: Extract mailbox data for user: petra@tachtler.net ... +| Run backup dovecot_backup ..................................... | 
-2019/01/30 15:07:56  INFO: Synchronization done for user: petra@tachtler.net ... ++-----------------------------------------------------------------+ 
-2019/01/30 15:07:56  INFO: Packaging to archive for user: petra@tachtler.net ... + 
-2019/01/30 15:07:56  INFO: Delete archive files for user: petra@tachtler.net ... +Create temporary '/srv/backup/dovecot_backup-OnUxredsCgti' folder [ OK ] 
-2019/01/30 15:07:56  INFO: Delete old archive files /srv/backup .....................[ OK ] + 
-2019/01/30 15:07:56  INFO: Delete mailbox files for user: petra@tachtler.net ... +Set ownership of DIR_TEMP to vmail:vmail ..................[ OK ] 
-2019/01/30 15:07:56  INFO: Delete mailbox files at: /srv/backup .....................[ OK ] + 
-2019/01/30 15:07:56  INFO: Ended backup process for user: petra@tachtler.net ... +Start backup process for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO+Extract mailbox data for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: +-----------------------------------------------------------------+ +... 
-2019/01/30 15:07:56  INFO: | End backup dovecot_backup ..................................... | +... 
-2019/01/30 15:07:56  INFO: +-----------------------------------------------------------------+ +Synchronization done for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: +Packaging to archive for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: +-----------------------------------------------------------------+ +... 
-2019/01/30 15:07:56  INFO: | Runtime statistics............................................. | +... 
-2019/01/30 15:07:56  INFO: +-----------------------------------------------------------------+ +Delete mailbox files for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: +Delete mailbox files at: /srv/backup/dovecot_backup-OnUxredsCgti [ OK ] 
-2019/01/30 15:07:56  INFO: - Number of determined users: 3 +Copying archive file for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: - ...Summary of failed users: 1 +Move archive file for user to: /srv/backup ................[ OK ] 
-2019/01/30 15:07:56  INFO: - ...Mailbox of failed users: +Delete archive files for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: - ... notvaild_email.net +Delete old archive files from: /srv/backup ................[ OK ] 
-2019/01/30 15:07:56  INFO: +Ended backup process for user: klaus@tachtler.net ... 
-2019/01/30 15:07:56  INFO: Runtime: 00:00:05 time elapsed. + 
-2019/01/30 15:07:56  INFO: +Start backup process for user: petra@tachtler.net ... 
-2019/01/30 15:07:56  INFO: +-----------------------------------------------------------------+ +Extract mailbox data for user: petra@tachtler.net ... 
-2019/01/30 15:07:56  INFO: | Finished creating the backups [Wed30 Jan 2019 15:07:56 (CET)] | +... 
-2019/01/30 15:07:56  INFO: +-----------------------------------------------------------------+ +... 
-2019/01/30 15:07:56  INFO:+Synchronization done for user: petra@tachtler.net ... 
 +Packaging to archive for user: petra@tachtler.net ... 
 +... 
 +... 
 +Delete mailbox files for user: petra@tachtler.net ... 
 +Delete mailbox files at: /srv/backup/dovecot_backup-OnUxredsCgti [ OK ] 
 +Copying archive file for user: petra@tachtler.net ... 
 +Move archive file for user to: /srv/backup ................[ OK ] 
 +Delete archive files for user: petra@tachtler.net ... 
 +Delete old archive files from: /srv/backup ................[ OK ] 
 +Ended backup process for user: petra@tachtler.net ... 
 + 
 +Delete temporary '/srv/backup/dovecot_backup-OnUxredsCgti' folder [ OK ] 
 + 
 +Set ownership of DIR_BACKUP to vmail:vmail ................[ OK ] 
 +Set permission of DIR_BACKUP to drwx------ ................[ OK ] 
 +Set file permissions in DIR_BACKUP to -rw------- ..........[ OK ] 
 + 
 ++-----------------------------------------------------------------+ 
 +| End backup dovecot_backup ..................................... | 
 ++-----------------------------------------------------------------+ 
 + 
 ++-----------------------------------------------------------------+ 
 +| Runtime statistics ............................................ | 
 ++-----------------------------------------------------------------+ 
 + 
 +- Number of determined users: 2 
 +- ...Summary of failed users: 0 
 + 
 +Runtime: 00:01:46 time elapsed. 
 + 
 ++-------------------------------------------------------------------+ 
 +| Finished creating the backups [Sat02 Oct 2021 08:07:50 (+0200)] | 
 ++-------------------------------------------------------------------+ 
 </code> </code>
  
Zeile 974: Zeile 1325:
   - Das Backup befindet sich unter **''/srv/backup''**   - Das Backup befindet sich unter **''/srv/backup''**
   - Der Benutzer lautet **''klaus@tachtler.net''**   - Der Benutzer lautet **''klaus@tachtler.net''**
 +***.tar.gz-Komprimierungsmethode**
 +<code>
 +# tar -avzf /srv/backup/klaus@tachtler.net-dovecot_backup_20140429_151044.tar.gz -C /tmp/recovery --atime-preserve --preserve-permissions
 +</code>
 +***.tar.zst-Komprimierungsmethode**
 +<code>
 +# tar -avzf /srv/backup/klaus@tachtler.net-dovecot_backup_20140429_151044.tar.zst -C /tmp/recovery --atime-preserve --preserve-permissions
 +</code>
 +
 +:!: **HINWEIS** - Der Paramter **''-a''** beim Befehl **''tar''** hat nachfolgende Bedeutung:
 <code> <code>
-# tar -xvzf /srv/backup/klaus@tachtler.net-dovecot_backup_20140429_151044.tar.gz -C /tmp/recovery --atime-preserve --preserve-permissions+-a, --auto-compress 
 +              use archive suffix to determine the compression program
 </code> </code>
  
tachtler/dovecot_backup_-_skript.1571230552.txt.gz · Zuletzt geändert: 2019/10/16 14:55 von klaus