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
Nächste ÜberarbeitungBeide Seiten der Revision
tachtler:dovecot_backup_-_skript [2019/01/31 07:04] – [Skript] klaustachtler:dovecot_backup_-_skript [2019/10/16 14:55] – [Backup] klaus
Zeile 46: Zeile 46:
  
 # CUSTOM - Backup-Files. # CUSTOM - Backup-Files.
 +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.gz
Zeile 82: Zeile 83:
 ^ Parametername          ^ Beschreibung                                                                            ^ ^ Parametername          ^ Beschreibung                                                                            ^
 | ''SCRIPT_NAME''        | Name des Skriptes                                                                       | | ''SCRIPT_NAME''        | Name des Skriptes                                                                       |
-| ''DIR_BACKUP''         | Verzeichnis in dem die Backup-Dateien erstellt werden sollen                            |+| ''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                            | 
 +| ''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                             |
 | ''FILE_DELETE''        | **Endung** zur Löschung von älteren Archivdateien, **muss wie ''FILE_BACKUP'' enden !** | | ''FILE_DELETE''        | **Endung** zur Löschung von älteren Archivdateien, **muss wie ''FILE_BACKUP'' enden !** |
Zeile 126: Zeile 128:
 #               will be send by e-mail.                                      # #               will be send by e-mail.                                      #
 #                                                                            # #                                                                            #
-# Last update : 31.01.2019                                                   # +# Last update : 08.10.2019                                                   # 
-# Version     : 1.10                                                         #+# Version     : 1.11                                                         #
 #                                                                            # #                                                                            #
 # Author      : Klaus Tachtler, <klaus@tachtler.net>                         # # Author      : Klaus Tachtler, <klaus@tachtler.net>                         #
Zeile 207: Zeile 209:
 # Version     : 1.10                                                         # # Version     : 1.10                                                         #
 # Description : Code redesign.                                               # # Description : Code redesign.                                               #
 +# -------------------------------------------------------------------------- #
 +# Version     : 1.11                                                         #
 +# Description : GitHub Issue #12                                             #
 +#               Change of the temporary storage medium from DIR_BACKUP to    #
 +#               TMP_FOLDER for temporary storage of extracted emails from    #
 +#               the mailboxes was introduced. This allows the use of a       #
 +#               temporary storage of the extracted emails from the mailboxes #
 +#               on a faster storage medium, or also on a local storage       #
 +#               medium, which avoids rights problems if DIR_BACKUP is e.g.   #
 +#               an NFS mounted storage.                                      #
 +#               Thanks to Krisztián Hamar.                                   #
 # -------------------------------------------------------------------------- # # -------------------------------------------------------------------------- #
 # Version     : x.xx                                                         # # Version     : x.xx                                                         #
Zeile 221: Zeile 234:
  
 # CUSTOM - Backup-Files. # CUSTOM - Backup-Files.
 +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.gz
Zeile 264: Zeile 278:
 CHOWN_COMMAND=`command -v chown` CHOWN_COMMAND=`command -v chown`
 CHMOD_COMMAND=`command -v chmod` CHMOD_COMMAND=`command -v chmod`
 +MKTEMP_COMMAND=`command -v mktemp`
 GREP_COMMAND=`command -v grep` GREP_COMMAND=`command -v grep`
 +MV_COMMAND=`which --skip-alias mv`
 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 401: Zeile 417:
 log "SCRIPT_NAME.................: $SCRIPT_NAME" log "SCRIPT_NAME.................: $SCRIPT_NAME"
 log "" log ""
 +log "TMP_FOLDER..................: $TMP_FOLDER"
 log "DIR_BACKUP..................: $DIR_BACKUP" log "DIR_BACKUP..................: $DIR_BACKUP"
 log "" log ""
Zeile 421: Zeile 438:
 checkcommand $CHMOD_COMMAND checkcommand $CHMOD_COMMAND
 checkcommand $GREP_COMMAND checkcommand $GREP_COMMAND
 +checkcommand $MKTEMP_COMMAND
 +checkcommand $MV_COMMAND
 checkcommand $PROG_SENDMAIL checkcommand $PROG_SENDMAIL
  
Zeile 436: Zeile 455:
 fi fi
  
-# Check if DIR_BACKUP Directory NOT exists.+# Check if DIR_BACKUP directory NOT exists.
 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
-        logline "DIR_BACKUP was now created " true+ if [ "$?" != "0" ]; then 
 +        logline "DIR_BACKUP was NOT created " false 
 + error 21 
 + else 
 +        logline "DIR_BACKUP was now created " true 
 + fi
 else else
         logline "Check if DIR_BACKUP exists " true         logline "Check if DIR_BACKUP exists " true
Zeile 508: Zeile 532:
 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.
 +DIR_TEMP=$($MKTEMP_COMMAND -d -p $TMP_FOLDER -t $SCRIPT_NAME-XXXXXXXXXXXX)
 +if [ "$?" != "0" ]; then
 + logline "Create temporary '$DIR_TEMP' folder " false
 + error 41
 +else
 + logline "Create temporary '$DIR_TEMP' folder " true
 + log ""
 +fi
 +
 +# Set rights permissions to DIR_TEMP.
 +$CHOWN_COMMAND -R $MAILDIR_USER:$MAILDIR_GROUP $DIR_TEMP
  
 # Start real backup process for all users. # Start real backup process for all users.
Zeile 516: Zeile 567:
  DOMAINPART=${users#*@}  DOMAINPART=${users#*@}
  LOCALPART=${users%%@*}  LOCALPART=${users%%@*}
- LOCATION="$DIR_BACKUP/$DOMAINPART/$LOCALPART/$MAILDIR_NAME"+ LOCATION="$DIR_TEMP/$DOMAINPART/$LOCALPART/$MAILDIR_NAME"
  USERPART="$DOMAINPART/$LOCALPART"  USERPART="$DOMAINPART/$LOCALPART"
  
Zeile 539: Zeile 590:
         log "Synchronization done for user: $users ..."         log "Synchronization done for user: $users ..."
  
- cd $DIR_BACKUP+ cd $DIR_TEMP
  
  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  $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART --atime-preserve --preserve-permissions
  
- log "Delete archive files for user: $users ..." + log "Delete mailbox files for user: $users ..." 
- (ls -t $users-$FILE_DELETE|head -n $BACKUPFILES_DELETE;ls $users-$FILE_DELETE)|sort|uniq -u|xargs -r rm+ $RM_COMMAND "$DIR_TEMP/$DOMAINPART" -rf
  if [ "$?" != "0" ]; then  if [ "$?" != "0" ]; then
-        logline "Delete old archive files $DIR_BACKUP " false+        logline "Delete mailbox files at: $DIR_TEMP " false
  else  else
-        logline "Delete old archive files $DIR_BACKUP " true+        logline "Delete mailbox files at: $DIR_TEMP " true
  fi  fi
  
- log "Delete mailbox files for user: $users ..." + log "Copying archive file for user: $users ..." 
- $RM_COMMAND "$DIR_BACKUP/$DOMAINPART" -rf+ $MV_COMMAND "$DIR_TEMP/$users-$FILE_BACKUP" "$DIR_BACKUP"
  if [ "$?" != "0" ]; then  if [ "$?" != "0" ]; then
-        logline "Delete mailbox files at: $DIR_BACKUP " false+        logline "Move archive file for user to: $DIR_BACKUP " false
  else  else
-        logline "Delete mailbox files at: $DIR_BACKUP " true+        logline "Move archive file for user to: $DIR_BACKUP " true 
 + fi 
 + 
 + cd $DIR_BACKUP 
 + 
 + log "Delete archive files for user: $users ..." 
 + (ls -t $users-$FILE_DELETE|head -n $BACKUPFILES_DELETE;ls $users-$FILE_DELETE)|sort|uniq -u|xargs -r rm 
 + if [ "$?" != "0" ]; then 
 +        logline "Delete old archive files from: $DIR_BACKUP " false 
 + else 
 +        logline "Delete old archive files from: $DIR_BACKUP " true
  fi  fi
  fi  fi
Zeile 564: Zeile 625:
         log ""         log ""
 done done
 +
 +# Delete the temporary folder DIR_TEMP.
 +$RM_COMMAND $DIR_TEMP -rf
 +if [ "$?" != "0" ]; then
 + logline "Delete temporary '$DIR_TEMP' folder " false
 + error 42
 +else
 + logline "Delete temporary '$DIR_TEMP' folder " true
 + log ""
 +fi
  
 # Set owner and rights permissions to backup directory and backup files. # Set owner and rights permissions to backup directory and backup files.
tachtler/dovecot_backup_-_skript.txt · Zuletzt geändert: 2023/07/05 19:07 von klaus