Backupdate sh: Unterschied zwischen den Versionen
Framp (Diskussion | Beiträge) |
K |
||
| Zeile 1: | Zeile 1: | ||
<pre> | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
| − | |||
| − | |||
# | # | ||
# Script zum sichern eines beliebigen Verzeichnisses mit rsync | # Script zum sichern eines beliebigen Verzeichnisses mit rsync | ||
| Zeile 14: | Zeile 12: | ||
# Bsp. für ein Backup welches jeden Tag um 24 Uhr gestartet wird (nicht getestet!): | # Bsp. für ein Backup welches jeden Tag um 24 Uhr gestartet wird (nicht getestet!): | ||
# 00 24 */1 * * User /Ordner/mit/Script/backup.sh | # 00 24 */1 * * User /Ordner/mit/Script/backup.sh | ||
| + | # | ||
| + | # Version: 1.0 | ||
| + | # Zuletzt geändert am: 07.06.2007 | ||
| + | # | ||
| + | # Autor Mathias Rabe | ||
| + | # Albert-Einstein-Str. 47 | ||
| + | # 63263 Neu-Isenburg | ||
| + | # mathiasrabe@web.de | ||
| Zeile 19: | Zeile 25: | ||
# Wovon soll ein Backup gemacht werden? | # Wovon soll ein Backup gemacht werden? | ||
| + | # Bsp wenn nur ein paar Ordner/Dateien kopiert werden sollen und nicht der gesamte Inhalt: | ||
| + | # SOURCE_LOCATION="/home/USER/original/Ordner1 /home/USER/original/Ordner2"; | ||
SOURCE_LOCATION=/home/master/backuptest/original; | SOURCE_LOCATION=/home/master/backuptest/original; | ||
| Zeile 40: | Zeile 48: | ||
DATE=$(date +"%Y%m%d"); | DATE=$(date +"%Y%m%d"); | ||
| + | # TODO: Nachfolgende Funktionen schmeißen noch Fehlermeldungen beim Programm ls, | ||
| + | # wenn kein backup_* Ordner existiert. Die Funktionen werden anscheinend auch schon | ||
| + | # am Anfang ausgeführt, obwohl sie erst später ausgeführt werden sollen. | ||
| + | # Beeinträchtigt aber keineswegs die Funktioninalität! | ||
NEWEST_BACKUP() { | NEWEST_BACKUP() { | ||
VAR_NEWEST_BACKUP=$(ls -d $BACKUP_LOCATION/backup_* | tail --lines=1) ; | VAR_NEWEST_BACKUP=$(ls -d $BACKUP_LOCATION/backup_* | tail --lines=1) ; | ||
Version vom 7. Juni 2007, 16:45 Uhr
#!/bin/sh
#
# Script zum sichern eines beliebigen Verzeichnisses mit rsync
# Es werden mehrere Ordner angelegt, mithilfe von Hardlinks,
# mit dem jeweils aktuellen Datum (backup_JahrMonatTag).
# Die ältesten Ordner werden gelöscht
#
# Dieses Skript kann durch einen Cron Job alle X Tage aufgerufen werden.
# Für weitere Infos siehe hier: http://www.newbie-net.de/anleitung_cron.html
# oder hier: http://www.selflinux.org/selflinux/html/cron.html
# Bsp. für ein Backup welches jeden Tag um 24 Uhr gestartet wird (nicht getestet!):
# 00 24 */1 * * User /Ordner/mit/Script/backup.sh
#
# Version: 1.0
# Zuletzt geändert am: 07.06.2007
#
# Autor Mathias Rabe
# Albert-Einstein-Str. 47
# 63263 Neu-Isenburg
# mathiasrabe@web.de
#--------------------------------Einstellungen----------------------------------
# Wovon soll ein Backup gemacht werden?
# Bsp wenn nur ein paar Ordner/Dateien kopiert werden sollen und nicht der gesamte Inhalt:
# SOURCE_LOCATION="/home/USER/original/Ordner1 /home/USER/original/Ordner2";
SOURCE_LOCATION=/home/master/backuptest/original;
# Wohin soll das Backup geschrieben werden?
BACKUP_LOCATION=/home/master/backuptest/backup;
# Wie viele Backups sollen maximal existieren? Achtung: zu der Anzahl kommt noch das neu hinzugefügte Backup!
# Bsp: Wenn hier 3 eingetragen ist, sind höchstens 4 Ordner vorhanden.
BACKUPS_UNTIL_ERASE=3;
#---------------------------------Programm--------------------------------------
if ! test -d $BACKUP_LOCATION ; then
echo "Backupverzeichnis $BACKUP_LOCATION existiert nicht";
exit 0;
fi
cd $BACKUP_LOCATION;
DATE=$(date +"%Y%m%d");
# TODO: Nachfolgende Funktionen schmeißen noch Fehlermeldungen beim Programm ls,
# wenn kein backup_* Ordner existiert. Die Funktionen werden anscheinend auch schon
# am Anfang ausgeführt, obwohl sie erst später ausgeführt werden sollen.
# Beeinträchtigt aber keineswegs die Funktioninalität!
NEWEST_BACKUP() {
VAR_NEWEST_BACKUP=$(ls -d $BACKUP_LOCATION/backup_* | tail --lines=1) ;
return $? ; } ;
OLDEST_BACKUP() {
VAR_OLDEST_BACKUP=$(ls -rd $BACKUP_LOCATION/backup_* | tail --lines=1) ;
return $? ; } ;
FILECOUNT() {
VAR_FILECOUNT=$(ls -d $BACKUP_LOCATION/backup_* | wc -w) ;
return $? ; } ;
if test -d $BACKUP_LOCATION/backup_$DATE ; then
echo "Ein aktuelles Backup existiert bereits";
exit 0;
fi;
#älteste Ordner löschen, Anzahl wie viele Ordner vorhanden sein sollen bei BACKUPS_UNTIL_ERASE definieren!
FILECOUNT;
while [ $VAR_FILECOUNT -gt $BACKUPS_UNTIL_ERASE ] ; do
OLDEST_BACKUP;
rm -rfv $VAR_OLDEST_BACKUP ;
FILECOUNT;
done;
#neues Backup erstellen:
NEWEST_BACKUP;
rsync -arbuv --delete --progress --link-dest=$VAR_NEWEST_BACKUP $SOURCE_LOCATION $BACKUP_LOCATION/backup_$DATE/ ;