tachtler:dovecot_backup_-_skript
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
tachtler:dovecot_backup_-_skript [2022/10/30 08:56] – [Skript] klaus | tachtler:dovecot_backup_-_skript [2023/07/05 19:07] (aktuell) – [Dovecot Backup - Skript] klaus | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
^ Beschreibung | ^ Beschreibung | ||
- | | Linux-Magazin | [[http:// | + | | Linux-Magazin | [[http:// |
| Homepage | | Homepage | ||
| Dokumentation | [[http:// | | Dokumentation | [[http:// | ||
Zeile 229: | Zeile 229: | ||
<code bash> | <code bash> | ||
- | #!/bin/bash | + | #!/usr/bin/env bash |
############################################################################## | ############################################################################## | ||
Zeile 238: | Zeile 238: | ||
# will be send by e-mail. | # will be send by e-mail. | ||
# # | # # | ||
- | # Last update : 30.10.2022 # | + | # Last update : 03.07.2023 # |
- | # Version | + | # Version |
# # | # # | ||
# Author | # Author | ||
Zeile 252: | Zeile 252: | ||
# +----------------------------------------------------------------------+ | # +----------------------------------------------------------------------+ | ||
# # | # # | ||
- | # Copyright (c) 2022 by Klaus Tachtler. | + | # Copyright (c) 2023 by Klaus Tachtler. |
# # | # # | ||
############################################################################## | ############################################################################## | ||
Zeile 368: | Zeile 368: | ||
# -------------------------------------------------------------------------- # | # -------------------------------------------------------------------------- # | ||
# Version | # Version | ||
+ | # 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. | ||
+ | # | ||
+ | # -------------------------------------------------------------------------- # | ||
+ | # Version | ||
# Description : GitHub: Issue #24 # | # Description : GitHub: Issue #24 # | ||
# | # | ||
# | # | ||
+ | # -------------------------------------------------------------------------- # | ||
+ | # Version | ||
+ | # Description : GitHub: Pull request #26 # | ||
+ | # | ||
+ | # | ||
# -------------------------------------------------------------------------- # | # -------------------------------------------------------------------------- # | ||
# Version | # Version | ||
Zeile 383: | Zeile 397: | ||
# CUSTOM - Script-Name. | # CUSTOM - Script-Name. | ||
SCRIPT_NAME=' | SCRIPT_NAME=' | ||
+ | |||
+ | # CUSTOM - Backup-Files compression method - (possible values: gz zst). | ||
+ | COMPRESSION=' | ||
# CUSTOM - Backup-Files. | # CUSTOM - Backup-Files. | ||
TMP_FOLDER='/ | TMP_FOLDER='/ | ||
DIR_BACKUP='/ | DIR_BACKUP='/ | ||
- | FILE_BACKUP=dovecot_backup_`date ' | + | FILE_BACKUP=dovecot_backup_`date ' |
- | FILE_DELETE=' | + | FILE_DELETE=$(printf |
BACKUPFILES_DELETE=14 | BACKUPFILES_DELETE=14 | ||
Zeile 419: | 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 445: | Zeile 463: | ||
VAR_COUNT_USER=0 | VAR_COUNT_USER=0 | ||
VAR_COUNT_FAIL=0 | VAR_COUNT_FAIL=0 | ||
+ | |||
+ | # FreeBSD specific commands | ||
+ | if [ " | ||
+ | DSYNC_COMMAND=`command -v doveadm` | ||
+ | STAT_COMMAND_PARAM_FORMAT=' | ||
+ | STAT_COMMAND_ARG_FORMAT_USER=' | ||
+ | STAT_COMMAND_ARG_FORMAT_GROUP=' | ||
+ | MKTEMP_COMMAND_PARAM_ARG=" | ||
+ | else | ||
+ | DSYNC_COMMAND=`command -v dsync` | ||
+ | STAT_COMMAND_PARAM_FORMAT=' | ||
+ | STAT_COMMAND_ARG_FORMAT_USER=' | ||
+ | STAT_COMMAND_ARG_FORMAT_GROUP=' | ||
+ | MKTEMP_COMMAND_PARAM_ARG=" | ||
+ | fi | ||
# Functions. | # Functions. | ||
Zeile 568: | Zeile 601: | ||
log "" | log "" | ||
log " | log " | ||
+ | log "" | ||
+ | log " | ||
+ | log "" | ||
+ | log " | ||
log "" | log "" | ||
log " | log " | ||
Zeile 578: | Zeile 615: | ||
log " | log " | ||
log "" | log "" | ||
+ | |||
+ | # Check if compress extension is allowed. | ||
+ | if [[ $COMPRESSION != ' | ||
+ | logline "Check compression extension" | ||
+ | log "" | ||
+ | log " | ||
+ | log "" | ||
+ | error 19 | ||
+ | fi | ||
# Check if command (file) NOT exist OR IS empty. | # Check if command (file) NOT exist OR IS empty. | ||
Zeile 594: | Zeile 640: | ||
checkcommand $STAT_COMMAND | checkcommand $STAT_COMMAND | ||
checkcommand $PROG_SENDMAIL | checkcommand $PROG_SENDMAIL | ||
+ | |||
+ | if [ $COMPRESSION = ' | ||
+ | checkcommand $GZIP_COMMAND | ||
+ | fi | ||
+ | |||
+ | if [ $COMPRESSION = ' | ||
+ | checkcommand $ZSTD_COMMAND | ||
+ | fi | ||
# Check if LOCK file NOT exist. | # Check if LOCK file NOT exist. | ||
Zeile 623: | Zeile 677: | ||
# Check if TMP_FOLDER is owned by $MAILDIR_USER. | # Check if TMP_FOLDER is owned by $MAILDIR_USER. | ||
- | if [ " | + | if [ " |
logline "Check if TMP_FOLDER owner is $MAILDIR_USER " false | logline "Check if TMP_FOLDER owner is $MAILDIR_USER " false | ||
$CHOWN_COMMAND -R $MAILDIR_USER: | $CHOWN_COMMAND -R $MAILDIR_USER: | ||
Zeile 637: | Zeile 691: | ||
# Check if TMP_FOLDER group is $MAILDIR_GROUP. | # Check if TMP_FOLDER group is $MAILDIR_GROUP. | ||
- | if [ " | + | if [ " |
logline "Check if TMP_FOLDER group is $MAILDIR_GROUP " false | logline "Check if TMP_FOLDER group is $MAILDIR_GROUP " false | ||
$CHOWN_COMMAND -R $MAILDIR_USER: | $CHOWN_COMMAND -R $MAILDIR_USER: | ||
Zeile 665: | Zeile 719: | ||
# Check if DIR_BACKUP is owned by $MAILDIR_USER. | # Check if DIR_BACKUP is owned by $MAILDIR_USER. | ||
- | if [ " | + | if [ " |
logline "Check if DIR_BACKUP owner is $MAILDIR_USER " false | logline "Check if DIR_BACKUP owner is $MAILDIR_USER " false | ||
$CHOWN_COMMAND -R $MAILDIR_USER: | $CHOWN_COMMAND -R $MAILDIR_USER: | ||
Zeile 679: | Zeile 733: | ||
# Check if DIR_BACKUP group is $MAILDIR_GROUP. | # Check if DIR_BACKUP group is $MAILDIR_GROUP. | ||
- | if [ " | + | if [ " |
logline "Check if DIR_BACKUP group is $MAILDIR_GROUP " false | logline "Check if DIR_BACKUP group is $MAILDIR_GROUP " false | ||
$CHOWN_COMMAND -R $MAILDIR_USER: | $CHOWN_COMMAND -R $MAILDIR_USER: | ||
Zeile 757: | Zeile 811: | ||
# Make temporary directory DIR_TEMP inside TMP_FOLDER. | # Make temporary directory DIR_TEMP inside TMP_FOLDER. | ||
- | DIR_TEMP=$($MKTEMP_COMMAND | + | DIR_TEMP=$($MKTEMP_COMMAND $MKTEMP_COMMAND_PARAM_ARG) |
if [ " | if [ " | ||
logline " | logline " | ||
Zeile 787: | Zeile 841: | ||
log " | log " | ||
- | $DSYNC_COMMAND -o plugin/ | + | |
+ | if [ " | ||
+ | $DSYNC_COMMAND -o plugin/ | ||
+ | else | ||
+ | $DSYNC_COMMAND -o plugin/ | ||
+ | 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 809: | Zeile 868: | ||
log " | log " | ||
- | $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART --atime-preserve --preserve-permissions | + | if [ " |
+ | $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART | ||
+ | else | ||
+ | $TAR_COMMAND -cvzf $users-$FILE_BACKUP $USERPART --atime-preserve --preserve-permissions | ||
+ | fi | ||
log " | log " | ||
- | $RM_COMMAND " | + | $RM_COMMAND |
if [ " | if [ " | ||
logline " | logline " | ||
Zeile 843: | Zeile 906: | ||
# Delete the temporary folder DIR_TEMP. | # Delete the temporary folder DIR_TEMP. | ||
- | $RM_COMMAND | + | $RM_COMMAND -rf $DIR_TEMP |
if [ " | if [ " | ||
logline " | logline " | ||
Zeile 907: | Zeile 970: | ||
log "" | log "" | ||
END_TIMESTAMP=`$DATE_COMMAND ' | END_TIMESTAMP=`$DATE_COMMAND ' | ||
- | log " | + | if [ " |
+ | DELTA=$((END_TIMESTAMP-RUN_TIMESTAMP)) | ||
+ | log " | ||
+ | else | ||
+ | log " | ||
+ | fi | ||
log "" | log "" | ||
headerblock " | headerblock " | ||
Zeile 967: | Zeile 1035: | ||
SCRIPT_NAME.................: | SCRIPT_NAME.................: | ||
+ | |||
+ | OS_TYPE.....................: | ||
COMPRESSION.................: | COMPRESSION.................: | ||
Zeile 1050: | Zeile 1120: | ||
SCRIPT_NAME.................: | SCRIPT_NAME.................: | ||
+ | |||
+ | OS_TYPE.....................: | ||
COMPRESSION.................: | COMPRESSION.................: |
tachtler/dovecot_backup_-_skript.1667116582.txt.gz · Zuletzt geändert: 2022/10/30 08:56 von klaus