tux

L i n u x - S c h u l e
Sicherung des Servers

Homepage | Server | Linux-Clients | Win9x-Clients | WinNT-Clients | Win3.11-Clients | Dos-Clients | Utilities

Backupstrategien

Wenn es mal zum GAU (dem Abrauchen der Festplatte) kommt, sollte man sich bequem zurücklehnen und dann sein letztes Backup einspielen ...
An vielen Schulen gibt es das aber gar nicht (was uns leider erheblich von professionellen Datenverarbeitern unterscheidet).

Ich möchte hier aber (vorerst) nicht auf die Prinzipien der Datensicherung eingehen, sondern nur ein Script vorstellen, mit dem ich in meiner Schule die wichtigsten Systemdateien und die Homeverzeichnisse der Anwender auf eine zweite Festplatte sichere. Entsprechend angepasst kann das Script sicher auch für Backups auf Datenbänder hilfreich sein.

Alle für das Script wichtigen Dateien liegen in /root/bin und werden über einen cronjob aufgerufen.

#!/bin/sh
#
# fullbackup Thomas Litsch 05.01.99
#
# Sichert alle Verzeichnisse unterhalb von / in eigene tgz-Archive ausser
# /home, /var, /proc, /save-hd, /a, /b, /cdrom und /mnt. Die Datei rootls
# (erzeugt mit "ls / > rootls") enthaelt die zu sichernden Unter-
# verzeichnisse und kann (sollte) individuell angepasst werden.
#
# /home und /var erhalten jeweils eigene Archive.
# In der Funktion tarthehomes wird fuer jeden User in passwd ueberprueft, ob
# ein Homeverzeichnis existiert. Das wird dann in ein Archiv mit seinem 
# Anwendernamen auf der zweiten Platte (unter /save-hd gemountet) gesichert.
#
# Für var wurde eine Dateiliste "varls" erstellt und mit der Hand editiert,
# ebenso für spool. Diese Dateilisten koennen selbst erstellt werden mit:
# "ls /var > varls" und "ls /var/spool > spoolls"
#
# !!! W I C H T I G !!! 
# 
# Die zweite Platte ist unter /save-hd gemountet!!
# Alle Dateien liegen im Verzeichnis /root/bin
#
############################################################################

# Variable für die Platte setzen
PLATTE=/dev/sda1


###################################################################### 
function tarthehomes {

for i in `cat /etc/passwd | cut -f1 -d:`
do 
	if [ -d /home/$i ];
	then
 	cd /home/$i
		if [ -e /save-hd/homes/$i.tgz ];
			then 
			# Hier wird erst das alte Archiv umbenannt und dann ein neues erzeugt
			# das alte Archiv bleibt dabei bestehen
			mv /save-hd/homes/$i.tgz /save-hd/homes/$i.tgz.old
			tar czf /save-hd/homes/$i.tgz . 

			# Wenn der Plattenplatz nicht ausreicht, kann nach erfolgreichem Schreiben des Archivs
			# das alte Archiv geloescht werden
			#mv /save-hd/homes/$i.tgz /save-hd/homes/$i.tgz.old 
			#tar czf /save-hd/homes/$i.tgz .  && rm -rf /save-hd/homes/$i.tgz.old
		
		else
			tar czf /save-hd/homes/$i.tgz .	
  		fi
	fi
done
}
###################################################################### 
function tartheroot {
cp /vmlinuz /save-hd
cp /zImage /save-hd
for i in `cat /root/bin/rootls`
do
	cd /$i
	tar czf /save-hd/$i.tgz .
done	
}

########################################################################
function tarthevar {
for i in `cat /root/bin/varls`
do
	cd /var/$i
	tar czf /save-hd/var/$i.tgz .
done	
}

########################################################################
function tarthespool {
for i in `cat /root/bin/spoolls`
do
	cd /var/spool/$i
	tar -czf /save-hd/var-spool/$i.tgz .
done	
}

##############################################################################
# Sicherung soll auf die zweite Platte gehen, ist die schon gemountet?

# Entfernen des alten "mount-locks"
if [ -x /tmp/save-hdexist ]; 
	then rm -f /tmp/save-hdexist
fi

# liest mtab und prüft, ob die zweite Platte gemountet ist
cat /etc/mtab | grep $PLATTE > /tmp/save-hdexist

# ist der Ausgabefile groesser Null, kanns losgehen, sonst erst mounten
if [ -s /tmp/save-hdexist ];
	then	
		if  ! [ -d /save-hd/homes ] ;
		then 
		mkdir /save-hd/homes
		fi
	tartheroot && tarthehomes && tarthevar && tarthespool
else
	/bin/mount /dev/$PLATTE /save-hd
		if  ! [ -d /save-hd/homes ] ;
		then  
		mkdir /save-hd/homes
		fi
	tartheroot && tarthehomes && tarthevar && tarthespool
fi
		
exit 0

Hier noch die Dateien rootls, varls und spoolls:

Rootls
bin
boot
dev
etc
lib
root
sbin
usr

varls

X11R6
adm
apache
cron
dhcpd
lib
log
mqueue
mysql
yp

spoolls

atjobs
atspool
locate
lp1
lpd
mail
news
pcnfs
rwho
uucp
uucppublic

Nach oben

© Thomas Litsch, zuletzt aktualisiert 28.04.2000, Email: thomas.litsch@linux-schule.de