Hallo Liste, Mal zur Abwechslung keine Frage :) anbei ein Skript das ein Übergrosses Verzeichniss mit X Unterverzeichnissen auf möglichst wenige CD's brennt. Vielleicht kann das ja ausser mir noch jemand gebrauchen. An die Skriptgurus vielleicht die Bitte wenn euch was auffällt das besser/anderst/zusätzlich oder sonst wie gemacht werden sollte bitte bescheid sagen. David, das galt Dir ;) Allen anderen viel Spass damit. Greetings Daniel #!/bin/bash # Skript um ein Verzeichnis >> 700MB mit vielen Unterverzeichnissen # < 700MB # auf CD's zu schreiben. CD's sind 1 zu 1 lesbar und enthalten # Listen mit dem Inhalt der anderen CD's # VERZEICHNIS="/mnt/server/software" # zu sicherndes Verzeichnis ISO9660="/mnt/backup/backup.iso" # 700MB müssen frei sein PATHLIST="/tmp/cdrom" # X.txt wird angehängt LOG="/dev/null" # /dev/null für kein Log CDSIZE="700000000" # in Byte CDRW="yes" # werden CD-RW verwendet? # # Programme definieren: (wird noch statisch) # MKISOFS=`which mkisofs` MKI_OPT=" -nobak -l -o $ISO9660 --path-list " CDRECORD=`which cdrecord` CDR_OPT=" -v -eject dev=0,0,0 speed=4 " # ######## AB HIER SOLLTEN KEINE ÄNDERUNGEN MEHR NÖTIG SEIN ####### # # Hier wird aufgeräumt function cleanup () { rm -f "$ISO9660" for each in 0 1 2 3 4 5 6 7 8 9 do rm -f "$PATHLIST".$each.txt done } # # Script soll als root ausgeführt werden # if [ $USER != root ] then echo "Programm muss als Benutzer \"root\" ausgeführt werden." exit -1; fi # # Sicherheitsvorkehrungen # cleanup # # Liste mit Pfaden erstellen und prüfen, dass 700MB nicht # überschritten # werden. # SIZE=0 num=1 # cd "$VERZEICHNIS" for dir in * do let SIZE=$[SIZE+`du -sb "$dir" | cut -f 1`] if test $SIZE -lt $CDSIZE then if test 0 -lt $SIZE then echo "$VERZEICHNIS/$dir" >> "$PATHLIST".$num.txt else SIZE=0 let num=$[num+1] echo "Überlauf --> nächste CD" echo "$VERZEICHNIS/$dir" >> "$PATHLIST".$num.txt fi else SIZE=0 echo "CD $num voll --> nächste CD" let num=$[num+1] echo "$VERZEICHNIS/$dir" >> "$PATHLIST".$num.txt fi done # # IMAGES der Reihe nach erstellen und auf CD brennen. # cd "$VERZEICHNIS" # Nur für den Fall .... i=1; for each in $PATHLIST.?.txt do echo -en "ISO Image wird erstellt." if $MKISOFS $MKI_OPT $each $PATHLIST.?.txt > $LOG 2>&1 then echo " OK" else echo " Failed" cleanup exit -1 fi if test $CDRW = "yes" then echo -en "CD-RW wird gelöscht" if $CDRECORD $CDR_OPT blank=fast > $LOG 2>&1 then echo " OK" else echo " Failed" cleanup exit -1 fi else echo "Die CD wird nicht gelöscht da CDRW != yes" fi echo -en "CD wird gebrannt " if $CDRECORD $CDR_OPT -data $ISO9660 > $LOG 2>&1 then echo " OK" echo "CD $i bitte wechseln und RETURN drücken" let i=$[i+1] read JUNK else echo " Failed" echo "Der Brennvorgang war nicht erfolgreich" echo "Das Programm wird beendet" cleanup exit -1 fi done # # Aufräumen # cleanup # EOF -- "Niemand hat mich gefragt, ob ich geboren werden will!" jetzt seht ihr was ihr davon habt.