[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Frage zu find (-mtime)



Hallo Mario

Am Sonntag, 27. Oktober 2002 23:54 schrieb Mario Duve:
> 
>
> #!/bin/sh
> FILE="/backup/filelist.daily"
>
> for file in $FILE ; do
>  if [ -f ${file} ]; then mv ${file} ${file}.`date -I`; fi
> done
>
> find /home -mtime -1 \! -type f -print > /backup/filelist.daily
> tar -cvz -T /backup/filelist.daily -f /backup/`date -I`.tar.gz
>
> exit 0

Das ganze macht keinen richtigen sinn weil sich in dem /home Verzeichniss eh 
jeden Tag etwas verändert z.B. die ~/.bash_history und noch einige mehr. Ich 
bastele gerade selbst an einem Programm das auf einem Shell Skript basiert 
und Verschiedene Archive und Zip tool untersützen soll, das Problem einer 
solchen Funktion liegt darin das zuerst alle unwichtigen Dateien vom Backup 
ausgeschloßen werden müßen, dies kannst Du bei tar mit der Option -X 'DATEI'. 
Ich würde es mal so probieren

#!/bin/sh
#
# Suche nach Dateien die in den letzten 24 Std verändert wurden in /home
find /home -mtime -1 -type f 1> $$.tmp 2>> /dev/null
#
# Überrüfen ob sich etwas Verändert hat
if [ -s "$$.tmp" ]
then
	diff DEINEDATEI $$.tmp 1> $$.tmp1 2>> /dev/null
else 
	rm $$.tmp 2>> /dev/null
	exit
fi
#
# DEINEDATEI  muß eine Liste der Dateien mit vollem Pathnamen sein 
# (aufgebaut wie die von der find ausgabe) in der Dateien stehen die sich so
# und so verändern ohne das Du ein Backup davon brauchst z.B. die bash_history
#
# Jetzt machen wir die Ausgebe von diff für tar lesbar
if [ -s "$$.tmp1" ]
then
	awk '$1~/^>/ {print $2} 1> $$.tmp2
else
	rm $$.tmp1 2>> /dev/null
	exit
fi
#
# Und jetzt zum Backup 
tar -cz -T $$.tmp2 -f DEINEBACKUPFILE 2> $$.tmp3
#
# DEINBACKUPFILE kannst Du hier wie oben auch mit `date -I` eintargen
#
# Zum schluß schreiben wir uns noch eine Mail um zu sehen ob es auch geklappt 
# hat
# 
if [ -s "$$.tmp3" ]
then 
	{
	echo -e "Hier die Fehlermeldung von tar:\n"
	cat $$.tmp3 2>> /dev/null
	} 1> $$.tmp4
	mail DEINUSERNAME -s "Backup von Home mit Fehlermeldung" < $$.tmp4
else
	echo "das Backup war ohne Fehler" 1> $$.tmp4
	mail DEINUSERNAME -s "Backup von Home fehlerfrei" < $$.tmp4
fi
#
# DEINUSERNAME mußt Du durch Deienen Benutzernamen ersetzen
#
# Jetzt löschen wir noch die temporären Dateien
rm $$.tm* 2>> /dev/null
#
# end of file

Die Lösung mit diff gefällt mir zwar noch nicht so ganz aber wenn jemand eine 
Idee hat das zu verbessern wäre ich daran sehr interessiert. 

Gruß Kurt





Reply to: