Zum Inhalt springen

Inteligentes Backup mittels Tar


rabadag

Empfohlene Beiträge

Hallo liebe Freunde.

Ich bin mal an einem Punkt angelangt, wo mein wissen nicht ausreicht um folgendes zu realisieren.

Situation:

Ein Server mit rund 2,5 Tera Daten in unterschiedlichen grossen Unterordnern muss gesichert werden.

Problem:

Da das erstellen eines so grossen Archivs schlicht Unsinn ist, dachte ich mir, das ich versuche jeden Ordner der eine Bestimmte Grösse erreicht Separate in die entsprechenden und getrennt zu sichern, damit die archive nicht zu gross werden.

Zur Idee:

Hauptordner hat 2,5 Thera Daten

/Daten 2.5T

/Daten/Daten1 2T

/Daten/Daten2 10G

/Daten/Daten3 1G

/Daten/Daten4 400G

/Daten/Daten5 90G

Nun soll das Skript die Hautordner die eine Bestimmte Grösse 10G nicht überschreiten sichern.

Das wären dann

tar -czvf /Backup/sourcedirpfath/archiv-name-dir.tar.gz /Daten/Daten2

tar -czvf /backup/sourcedirpfath/archiv-name-dir.tar.gz /Daten/Daten3

Die Ordnern die grösser sind, sollen dabei ignoriert werden und im nächsten schritt innerhalb dieses Ordner erneut gesichert werden also.

tar -czvf /backup/sourcedirpfath/archiv-name-dir.tar.gz /Daten/Daten1/Dir1

und so weiter, damit ich am schluss eine Backup Struktur erhalte, die ordnermässig identisch ist, und innerhalb der Ordner die Tar Archive liegen wo der Source Ordner nicht grösser ist als die z.b 10G

aber dem source Direktory entspricht.

ein Problem das dabei noch ein Hindernis sein könnte ist, das diverse Ordner ein Lehrschlag enthalten.

Ich hab mal versucht anzufangen und hab mir mal das zusammen gebastelt aber halt ohne Grössen Funktion.



DATE=$(date +%m-%d-%H%M%S)

bakdir="/Daten/dir1/";

bakdirlength=${#bakdir};                            

destdir="/bdrive/dir1/";     



    for directory in $(find $bakdir -maxdepth 1 -mindepth 1  -type d); do

    dirname=${directory:$bakdirlength}                                   

     tar -X $exclude -czvf $destdir$dirname.tgz $directory | tee destdir$dirname.log

    done  


Wie kann ich dies verwirklichen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Besten Dank für die links..

Leider aber sind die Progis für mein vorhaben zu umfangreich und das was ich wirklich brauche nicht möglich ist.

Ich hab mir jetzt mal ein script zusammen gebaut das schon ganz gut funktioniert.

Muss da nur noch ein 2 Dinge lösen wo ich euch nochmals um Hilfe bitte.

Mein Script:


#!/bin/sh                               




bakdir="/Daten";

destdir="/bdrive/test1";               

excludelog="/bdrive/exclude.log";      

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 existiert nicht Ich erstelle ihn jetzt"

        mkdir "$destdir/$destfolder"                                                        

sleep 1                                                                                     

fi                                                                                          


## Suche nach Unterordnern 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 Ordner 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 existiert 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

Funktion

1.

Suche nach Ordnern kleiner 4Gb und erstelle Ordner Struktur auf Backup Dir. maxdepth -1

2.

Suche Ordner grösser 4Gb und erstelle Ordner Struktur auf Backup dir

Maxdepth -1

3.

Suche nach Daten die im entsprechenden Ordner die <=4G sind und sichere sie nach Backup Dir Unterordner. find $1 maxdepth 0 -type -f

4.

Sichere Unterordner die im entsprechenden Hauptordner <=4G liegen und sichere sie nach Backup Dir Unterordner.

5. Fehlt noch.

Die letzte Funktion kriege ich nicht hin..

Es sollte nun für jeden Ordner der grösser ist als 4GB Punkt 1 - 5 wider holden.

schleife--

All so Ordner anlegen >=4GB, erneut im Source Unterordner suchen die grösser als 4Gb sind, Unterordner anlegen, Alle Ordner sichern die kleiner 4Gb sind. und so weiter,, bis der ganze Pfad gesichert ist.

schleife ende --

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...