Dump-Backupskript
Aus ConfigWiki
Version vom 20. Dezember 2011, 10:30 Uhr von Thomasm (Diskussion | Beiträge)
Enthält ein paar interessante Hacks. <source lang="bash">
#!/bin/bash
# Funktionen
function backup_age() {
LEVEL=$1
if ! test -f /tmp/backups/home/$LEVEL; then
return 1
fi
LAST_DUMP=$(file /tmp/backups/home/$LEVEL \
| grep -o "... ... .. ..:..:.. ...." | head -1)
LAST_DUMP_EPOCH=$(date +%s -d "$LAST_DUMP")
NOW_EPOCH=$(date +%s)
echo $((NOW_EPOCH - LAST_DUMP_EPOCH))
}
function cleanup() {
LEVEL=$1
rm -f /tmp/backups/home/*.tmp
for file in /tmp/backups/home/*
do
base=$(basename $file)
test "$base" = "*" && break
test "$base" -le $LEVEL && continue
rm $file
done
}
# Programm
if ! test $(id -u) = 0; then
echo "$0: Keine Root-Rechte!" >&2
exit 1
fi
if ! backup_age 0 \
|| test $(backup_age 0) -gt 604800; then
dump -u -0 -f /tmp/backups/home/0.tmp /home \
&& mv /tmp/backups/home/0{.tmp,}
cleanup 0
elif ! backup_age 1 \
|| test $(backup_age 1) -gt 86400; then
dump -u -1 -f /tmp/backups/home/1.tmp /home \
&& mv /tmp/backups/home/1{.tmp,}
cleanup 1
else
dump -u -2 -f /tmp/backups/home/2.tmp /home \
&& mv /tmp/backups/home/2{.tmp,}
cleanup 2
fi
</source>