Backupdate sh
Version vom 7. Juni 2007, 16:29 Uhr von Framp (Diskussion | Beiträge)
#!/bin/sh # # Version: 20070607 # # 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 #--------------------------------Einstellungen---------------------------------- # Wovon soll ein Backup gemacht werden? 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"); 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/ ;