Add scripts 'show-deleted-mailboxes.sh' and 'show-deleted-maildomains.sh'.
This commit is contained in:
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Gelöschte Maildomains auflisten.
|
||||
standardverzeichnis=/var/deleted-maildomains
|
||||
printf '\nBasisverzeichnis [%s]: ' "$standardverzeichnis" >&2
|
||||
IFS= read -r basisverzeichnis || exit 1
|
||||
basisverzeichnis=${basisverzeichnis:-$standardverzeichnis}
|
||||
|
||||
# Auch einen eingegebenen Pfad wie ~/mailbackup unterstützen.
|
||||
case $basisverzeichnis in
|
||||
'~') basisverzeichnis=$HOME ;;
|
||||
'~/'*) basisverzeichnis=$HOME/${basisverzeichnis:2} ;;
|
||||
esac
|
||||
|
||||
if [[ ! -d $basisverzeichnis || ! -r $basisverzeichnis || ! -x $basisverzeichnis ]]; then
|
||||
printf 'Basisverzeichnis ist nicht lesbar oder nicht zugänglich: %s\n' \
|
||||
"$basisverzeichnis" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
shopt -s nullglob
|
||||
status=0
|
||||
gesamtbytes=0
|
||||
namensbreite=0
|
||||
groessenbreite=0
|
||||
namen=()
|
||||
loeschdaten=()
|
||||
groessen=()
|
||||
|
||||
verzeichnisse=("${basisverzeichnis%/}"/*/)
|
||||
|
||||
muster='^([0-9]{4}-[0-9]{2}-[0-9]{2})_([0-9]{2})-([0-9]{2})_(.+)$'
|
||||
for verzeichnis in "${verzeichnisse[@]}"; do
|
||||
pfad=${verzeichnis%/}
|
||||
[[ ${pfad##*/} =~ $muster ]] || continue
|
||||
|
||||
name=${BASH_REMATCH[4]}
|
||||
namen+=("$name")
|
||||
loeschdaten+=("${BASH_REMATCH[1]} ${BASH_REMATCH[2]}:${BASH_REMATCH[3]}")
|
||||
|
||||
# Belegte Bytes addieren und erst für die Ausgabe formatieren.
|
||||
if groessenzeile=$(du -s -B1 -- "$verzeichnis"); then
|
||||
bytes=${groessenzeile%%$'\t'*}
|
||||
gesamtbytes=$(( gesamtbytes + bytes ))
|
||||
groesse=$(numfmt --to=iec "$bytes")
|
||||
else
|
||||
groesse='?'
|
||||
status=1
|
||||
fi
|
||||
groessen+=("$groesse")
|
||||
|
||||
if (( ${#name} > namensbreite )); then
|
||||
namensbreite=${#name}
|
||||
fi
|
||||
if (( ${#groesse} > groessenbreite )); then
|
||||
groessenbreite=${#groesse}
|
||||
fi
|
||||
done
|
||||
|
||||
printf '\n'
|
||||
if (( ${#namen[@]} == 0 )); then
|
||||
zeile='Keine passenden Unterverzeichnisse gefunden.'
|
||||
printf '%s\n' "$zeile"
|
||||
else
|
||||
for index in "${!namen[@]}"; do
|
||||
name=${namen[index]}
|
||||
padding=$(( namensbreite - ${#name} ))
|
||||
printf -v zeile 'Maildomain: %s%*s Löschdatum: %s - Größe: %*s' \
|
||||
"$name" "$padding" '' "${loeschdaten[index]}" \
|
||||
"$groessenbreite" "${groessen[index]}"
|
||||
printf '%s\n' "$zeile"
|
||||
done
|
||||
fi
|
||||
|
||||
printf '\n'
|
||||
printf '%*s\n' "${#zeile}" '' | tr ' ' '='
|
||||
|
||||
gesamtgroesse=$(numfmt --to=iec "$gesamtbytes")
|
||||
printf 'Gesamtgröße: %s' "$gesamtgroesse"
|
||||
if (( status != 0 )); then
|
||||
printf ' (unvollständig)'
|
||||
fi
|
||||
printf '\n\n'
|
||||
exit "$status"
|
||||
Reference in New Issue
Block a user