Backup spezial Script.

R

rabadag

Mitglied
Hallo Liebe Freunde.

Stehe mal wider vor einem prob, wo ihr mir sicherlich weiterhelfen könnt.

Funktions- beschrieb:

1. Skript erstelle für jeden gefundenen Order im Source Root einen im Backupdir.

2. Es wird geprüft ob der Inhalt des Ordners nicht grösser 4Gb ist.

3. Order die nicht grösser sind als 4GB werden mit Tar gesichert.

4. Geht noch nicht..
Die Ordner die grösser 4GB sind, sollen separat getrennt behandelt werden und die Unterordner im Backup dir erstellen. Die Unterordner die kleiner sind sichern und so weiter.

Code:
#!/bin/sh 



bakdir="/Daten/shares/";
destdir="/bdrive/test1"; 
excludelog="/bdrive/exclude.log";
#for directory in $(find $bakdir -type d); do

rm "/bdrive/exclude.log";
        
        
### Finde alle Ordner
find $bakdir -maxdepth 1 -mindepth 1 -type d | while read directory 
do
echo "suche in  $directory"
sleep 1
SIZE=`du -s "$directory" | cut -f 1`

## Teste auf grösse des Ordners
if [ $SIZE -gt 4331580 ]
then
	   
           echo "Ordner ist zu gross $SIZE"
           #touch "$excludlog"
           #echo $directory >> $excludelog
	    destfolder=`basename "${directory}"`                                                                                                          
	    echo "Speichere nach $destdir/$destfolder"
sleep 1

## Erstelle Destination Ordner
if [ -d "$destdir/$destfolder" ]    
then                                
    echo "stepp 1 Ordner $destdir/$destfolder ok"
    sleep 1                                              
else                                                 
    echo "Stepp 1 Ordner exisiert nicht Ich erstlle ihn"
    mkdir "$destdir/$destfolder"                    
sleep 1                                                 
fi 

else



destfolder=`basename "${directory}"`
    
### Erstelle Destination Ordner
if [ -d "$destdir/$destfolder" ]
then
	echo "stepp 1 Destination Ordner $destdir/$destfolder vorhanden"
sleep 1
else
    echo "Stepp 1 Destination Ordner $dest/$destfolder exisiert nicht Ich erstlle ihn jetzt"
	mkdir "$destdir/$destfolder"
sleep 1
fi

## Suche nach unterordner die Archiviert werden
find "$directory" -maxdepth 1 -mindepth 1 -type d | while read folder
do
    	    VNAME=`basename "${folder}"`
	    destfolder=`basename "${directory}"`

## Teste erneut ob Destination folder Existiert und Starte Sicherung
if [ -d "$destdir/$destfolder" ]
then

echo " stepp 2 Destination Ordner $dest/$destfolder vorhanden"
sleep 1
find "$directory" -maxdepth 1 -type f -print | tar -czvf "$destdir/$destfolder/rootdir.tgz" -T -

tar -czvf "$destdir/$destfolder/$VNAME.tgz" "$folder" | tee "$destdir/$destfolder/$VNAME.log" 

else
echo "stepp 2 Destination Ordner $dest/$destfolder exisiert nicht erstelle ihn jetzt"
mkdir "$destdir/$destfolder"
touch "$destdir/$destfolder/$FNAME.else"
tar -czvf "$destdir/$destfolder/$VNAME.tgz" "$folder" | tee "$destdir/$destfolder/$VNAME.log"
fi

done

fi

done


Was mein Problem ist, das es bis an hin nur in der ersten ebene des Root Folders Funktioniert. die Order die Grösser sind, werden zwar erstellte aber die Unterordnern nicht gesichert die kleiner sind als 4GB. Das ganze sollte aber rekursive Funktionieren.

Wie kann ich das machen?
 
vielleicht kannst du mit df -h prüfen ob ein ordner entsprechend groß ist. und wenn ja, entpsrechendes ausführen. wird ein bisschen häßlich werden, weil du zunächst prüfen musst ob der letzte Buchstabe ein G ist. und dann noch ob größer als 4.

das wäre jetzt meine erste idee dazu.
teil zwei könnte etwa so gehen:

Code:
MAX_SIZE=4
SIZE=$(df -h|tail -1)

has_maxsize()
{
if [ SIZE -le MAX_SIZE ]
  then
       dosomething...
  else
      dosomething else
fi
}
 
Zuletzt bearbeitet:
ich kapiere hier die Abfrage nach der größe nicht wirklich, warum sicherst du nicht einfach alles und splittest einfach die Archive? So ist es ja doch recht schwer herauszufinden ob er jetzt etwas aus versehen, z.b. wegen einem falsch abgelegten DVD-Image, oder wegen sonstwas einfach nicht gesicher hat....
 
Der grund warum ich das so haben muss ist, weil das Ganze dir im moment 4Tb gross ist wächst aber täglich um 100Gb an. Aauch wenn ich das splite, ist eine allfällige widerherstellung seehr aufwendig und Zeit intensive anhand der Grösse des Archives.

Um schnellst möglich Daten und Verzeichnisse wider herzustellen sind kleine Archive ideal.

So soll das script rekursive Verzeichnisse sichern die kleiner sind als 4Gb oder auch 10GB. jenachdem was ideal ist.

Die anderen Verzeichnisse die grösser sind rekrursive sichern also widerum die subfolder sichern die kleienr sind als 4GB. Bis dann der Ganze Pfad gesichert ist.

"tuxlover"
Die Grösse herauszufinden ist nicht das prob. das hab ich bereits gelöst.

Veranschauung.

Schritt1
#/dir
40Gb order1 --> gehe in unterorner (Schritt2)
3Gb order2 --> sichere
1GB order3 --> sichere

Schritt2
200Mb order1/sub1 --> sichere
800MB order1/sub2 --> sichere
29GB order1/sub3 --> gehe in Unterordner und widerhole Schritt2
10GB order1/sub4 --> gehe in Unterordner und widerhole Schritt2
 
Hm, irgendwie erschließt sich mir der Sinn immer noch nicht... ob du's jetzt Unterordnerweise machst oder gleich richtig....
 
Ist ja gut und recht aber dann stellt sich mir die nächste Frage warum du nicht eine ordentliche Backupsoftware verwendest die dir Indexes der Archive usw. erstellt, zb. bacula?
IMHO wird bei der Datenmänge doch recht schnell der überblick verloren....
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

HandbrakeCLI Shell Skript

Shell Skript beschleunigen

verzeichniss suche funktioniert nicht

bash for schleife mit if

Zurück
Oben