initial commit v1.0

This commit is contained in:
2014-11-28 15:28:57 +01:00
commit 2e41d8eb52
4 changed files with 183 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
config.cfg

51
bak-pars.sh Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
#################################################
# Einfaches Shellscript zum inkrementellen Sichern von Verzeichnissen und Dateien
# Dieses Script liest mitgegebene Parameter aus und bietet keinen Prompt
# Basiert auf dem Backupscript von Max Kalus: http://www.auxnet.de/blog/blog-post/2008/10/27/taegliches-inkrementelles-backup-mit-cron-und-tar-unter-linux.html
#
# Geschrieben von Max Mehl <mail@mehl.mx>
# This application is Free Software under a GNU GPL 3.0-Licence
#################################################
# Festgelegte Variablen, müssen nicht geändert werden
LASTMONTHDIR=lastmonth
TSNAME=timestamp.snar
if [ "$1" = "" ]; then
echo "Usage: backupscript-promptless.sh NAME DIRECTORY DESTINATION k/i"
exit 0
elif [ "$4" = "" ]; then
echo "Not enough arguments"
exit 0
#else
#echo "Given arguments: $1 $2 $3 $4"
fi
# Test ob Zielspeicherort vorhanden. Wenn nicht, erstellen
if [ ! -d "$3" ]; then
mkdir $3
fi
# Eigentliche Backuproutine
if [ "$4" = "k" ]; then
#Komplettes Backup
MYDATE=complete
#Alte Timestamps löschen
rm -f "$3/$TSNAME"
#Alte Backups löschen
rm -rf "$3/$LASTMONTHDIR.$1.d"
#Neue alte Backups in Ordner verschieben
mkdir "$3/$LASTMONTHDIR.$1.d"
mv -f "$3/$1".*.tgz "$3/$LASTMONTHDIR.$1.d"
elif [ "$4" = "i" ]; then
#Inkrementelles Backup
MYDATE=$(date +%y%m%d-%H%M)
else
echo "Unknown argument. Use k or i"
fi
#Abzug erstellen
tar czf "$3"/"$1".$MYDATE.tgz -g "$3/$TSNAME" $2 2> /dev/null

120
bak.sh Executable file
View File

@@ -0,0 +1,120 @@
#!/bin/bash
#################################################
# Einfaches Shellscript zum inkrementellen Sichern von Verzeichnissen und Dateien
# Basiert auf dem Backupscript von Max Kalus: http://www.auxnet.de/blog/blog-post/2008/10/27/taegliches-inkrementelles-backup-mit-cron-und-tar-unter-linux.html
#
# Geschrieben von Max Mehl <mail@mehl.mx>
# This application is Free Software under a GNU GPL 3.0-Licence
#################################################
# Festgelegte Variablen, müssen nicht geändert werden
LASTMONTHDIR=lastmonth
TSNAME=timestamp.snar
# Test if config.cfg exists and set needed variables
if [ ! -e config.cfg ]; then echo "Missing config.cfg file. Edit and rename config.cfg.sample"; exit 1; fi
source config.cfg
## FUNKTIONEN
# Hilfetext, wird aufgerufen mit helptext
helptext() {
unset NAME DEST DIRS KI NUM # Setze Variablen zurück
echo "Available options:"
echo " +-------------------------------------+"
echo " | h - Gib diesen Hilfetext aus |"
echo " | q - Beende |"
echo " | p - Wähle aus vordefinierten Backups|"
echo " | m - Backup manuell eingeben |"
echo "+--------------------------------------+"
}
helptext
check() {
# Komplett oder inkrementell?
echo "Soll ein Komplettbackup mit Archivierung alter Backups gemacht werden oder ein inkrementelles?"
read -p "k für Komplett, i für Inkrementell: " KI
# Prüfe Variablen auf Richtigkeit
if ! ([ $KI = "k" ] || [ $KI = "i" ]); then
echo "Ungueltige Eingabe. k oder i wird erwartet."
elif [ ! -e $DIRS ]; then
echo "Angegebenes zu sichernde(s) Verzeichnis/Datei existiert nicht."
else
backup
fi
helptext
}
backup() {
# Test ob Zielspeicherort vorhanden. Wenn nicht, erstellen
if [ ! -d "$DEST" ]; then
mkdir $DEST
fi
# Eigentliche Backuproutine
if [ "$KI" = "k" ]; then
#Komplettes Backup
MYDATE=complete
#Alte Timestamps löschen
rm -f "$DEST/$TSNAME"
#Alte Backups löschen
rm -rf "$DEST/$LASTMONTHDIR.$NAME.d"
#Neue alte Backups in Ordner verschieben
mkdir "$DEST/$LASTMONTHDIR.$NAME.d"
mv -f "$DEST/$NAME".*.tgz "$DEST/$LASTMONTHDIR.$NAME.d"
elif [ "$KI" = "i" ]; then
#Inkrementelles Backup
MYDATE=$(date +%y%m%d-%H%M)
fi
#Abzug erstellen
tar czf "$DEST"/"$NAME".$MYDATE.tgz -g "$DEST/$TSNAME" $DIRS 2> /dev/null
}
## SCHLEIFE
while :
do
#tput clear # Schirm loeschen und Menuetext ausgeben
echo -n "What to do? h for help: "
read INPUT
case $INPUT in
h) helptext
echo "";;
q) echo "Bye!" && exit 1
echo "";;
p) echo "Folgende vordefinierten Backups stehen zur Auswahl:"
# Geht Arrays mit vordefinierten Backups durch
for ((i = 0; i < ${#PRENAME[*]}; i++))
do
echo "$i: Bezeichnung: "${PRENAME[$i]}" mit dem zu speichernden Pfad "${PREDIRS[$i]}" und dem Zielspeicherort "${PREDEST[$i]}"."
echo ""
done
# Liest Nummer des vordefinierten Backups ein
read -p "Welches Backup soll ausgewählt werden? Bitte Nummer eingeben: " NUM
# Variablen werden dementsprechend gesetzt für Backupjob
NAME="${PRENAME[$NUM]}"
DEST="${PREDEST[$NUM]}"
DIRS="${PREDIRS[$NUM]}"
# Check starten, dieser startet dann Backup
check
echo "";;
m) echo "Bitte Backupdaten eingeben:"
read -p "Bezeichnung des Backups: " NAME
read -p "Zielspeicherort: " DEST
read -p "Zu sicherndes Verzeichnis: " DIRS
# Check starten, dieser startet dann Backup
check
echo "";;
*) echo "Falsche Eingabe!"
echo "";;
esac
done

11
config.cfg.sample Normal file
View File

@@ -0,0 +1,11 @@
# PRENAME: Name of backup
# PREDEST: Destination where backup should stored in
# PREDIRS: Directory which should be backupped
PRENAME[0]=name1
PREDEST[0]=/home/user/backup/name1
PREDIRS[0]="/home/user/documents"
PRENAME[0]=name2
PREDEST[0]=/home/user/backup/name2
PREDIRS[0]="/home/user/pictures"