• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Shellskript für Datensicherung

Hallo Leute,

was ich machen will, steht ja bereits in der Überschrift. Ich beschreib mal kurz die Umgebung:
- SuSE OSS 10.1
- 2 extra-Partitionen (/websrv, /websrv_backup)
- unter /websrv -> Apache, PHP, PostgreSQL, Webmin

Ich möchte nun gerne ein Skript schreiben, möglichst mit dem TapeArchiver, welches ein Backup aller Dienste unter /websrv anlegt. Hierzu meine Frage, wäre es ausreichend, wenn ich in dem Skript, alle Dienste stoppe und anschließend einfach das komplette Verzeichnis /websrv rekursiv sichere und dann wieder die Dienste starte? Wären dann auch wirklich alle relevanten Daten vorhanden?
Die Dienste habe ich nicht von SuSE installieren lassen, sondern nach der OS-Installation von Hand kompiliert und so ins System integriert. Müsste ich bei einer Rücksicherung auf den gleichen Server alle Dienste neu installieren, oder würde es in diesem Fall reichen, wenn ich die Daten aus dem Backup zurückspiele?


Vielen Dank für alle Hilfen im voraus!
 

byron1778

Hacker
Hallo,

beantwortet vielleicht nicht ganz Deine Frage, aber folgendes habe ich einst getan.
Ich habe mir ein Script geschrieben, welches bestimmte Verzeichnise mittels tar und gzip sichert.
Wobei es jedesmal so abläuft, dass die Sicherung dann folgenden Namen bekommt.

<Verzeichnisname>_<aktuelles Datum>.tar.gz

Hoffe, es hilft Dir.

Mfg
Byron
 
Helfen tut mir das zwar nicht, aber trotzdem Danke.

Ich habe auch bereits ein Backup-Skript geschrieben. Hier habe ich aber nur bestimmte Datenbereiche gesichert, ebenfalls mit tar und habe Datum und Zeit (falls das Skript mehrmals am Tag aufgerufen werden sollte) in den Dateinamen geschrieben. Das ist auch alles nicht das Problem.

Ich muss eigentlich nur wissen, ob es halt reichen würde, wenn ich den Ordner höchster Ordnung sichere und später damit sogar die Dienste wiederherstellen könnte...wobei das wohl nicht funktionieren wird.

Vielleicht kann mir einer beantworten, ob ich bei der DB einen Dump extra ziehen muss, oder ob es halt hier mit dieser Methode ausreichen würde.
 
A

Anonymous

Gast
thesecondjoker schrieb:
Vielleicht kann mir einer beantworten, ob ich bei der DB einen Dump extra ziehen muss, oder ob es halt hier mit dieser Methode ausreichen würde.

Wenn die Datenbank beendet ist während der Sicherung brauchst du nicht unbedingt einen dump, obwohl der immer besser ist, wenn es ja mal Probleme geben sollte. Den kann man auch besser in eine neu installierte DB einspielen.

Zu deiner anderen Frage: kommt ganz darauf an, was du beim kompilieren für Installations-Verzeichnisse eingestellt hast und wie deine Programme selbst konfiguriert sind. Wenn in deinen Verzeichnissen und damit in der Sicherung alle Librarys, Share-Dateien und Konfigurationen mit drauf sitzen, dann könnte es funktionieren. Allerdings nehme ich an, dass zumindestens einige Dateien sich außerhalb dieser Verzeichnisse zB unterhalb von /etc befinden, (Startscripte zB). Einige Programme legen auch Dateien unterhalb von /var an, zumindestens während der Laufzeit. Mit deinen Sicherungen solltest du also zumindestend deine Daten sicher haben. Wie du diese wieder zu laufen bringst, wirst du anhand deiner Konfiguration selbst ausprobieren müssen. Besser ist sowas immer über ein Paket zu installieren, notfalls eben mittels checkinstall erzeugen, da kann man sich zumindestens mal einen Überblick verschaffen, welche Dateien bei der Installation zu einem Programm dazugehören und wo sie überall hingestreut wurden.

robi
 
Danke!

Ich habe mir das gedacht. Fiel mir während des Schreibens, des letzten Beitrages ein, dass ja schon alleine die Log-Files meistens unter /var liegen. Die Konfigurationsdateien, liegen alle unterhalb von /websrv.

Aber vielleicht macht es sinn, sowohl einen Dump zu ziehen, als auch das gesamte Verzeichnis zu sichern. Hierdurch kann ich einen Dump schnell zurücksichern, oder ggf. die gesamte Software. Dann wird halt nur das Backup recht groß werden. Das ist aber nicht so tragisch.

Wie lange sollte man solche Sicherungen aufheben? Gibt es da Bestimmungen oder Erfahrungswerte? Ich habe sie auf anderen Servern, hauptsächlich SMB-Fileservern nach 7 Tagen meistens gelöscht (weil die Server leider kein Bandlaufwerk haben, sondern auf einen weiteren Fileserver sichern (via NFS), der wiederum ein Bandlaufwerk hat. Da wollte ich dann nicht den Platz durch wochelange Sicherungen verschwenden.
 
A

Anonymous

Gast
thesecondjoker schrieb:
Wie lange sollte man solche Sicherungen aufheben? Gibt es da Bestimmungen oder Erfahrungswerte?
Kommt darauf an was das für Daten sind, du kannst für bestimmte Daten sogar vom Gesetz her gezwungen werden diese zu Nachweis und Beweiszwecken bis zu 30 Jahre aufzubewahren.
Im Normalfall jedoch mindestens bis zum erfolgreichen Abschluss des nächsten Backups. Mehr wie 3 Backups hat wohl noch niemand zum wiederherstellen seiner Daten benötigt, außer es war vor vorne herein schon der Wurm im Backupkonzept. Also maximal die letzten 3 erfolgreichen Vollsicherungen von deinen Daten, sollte dicke reichen.

robi
 
Alles klar. Danke.

Das mit den 30 Jahren ist mir bekannt. Arbeite im KH (IT). Aber hier werden keine Patientendaten gesichert bzw. abgelegt.
Ich werde wohl auf 5 Tage, ergo 5 Sicherungen gehen. Bei uns können die User-zu-dumm-Errors nicht ausgeschloßen werden. Daher kann es vorkommen, dass jemand ankommt, der Daten vor 4 Tagen geändert bzw. gelöscht, die er aber jetzt ganz dringend wieder braucht, nicht etwa vor 4 Tagen, nein jetzt... :roll:

Aber solche DAU-Probleme sind wohl hinreichend bekannt... :twisted:
 
Ach ja...hab noch was vergessen. Stoße gerade auf Shell-Skript-Probleme.

Hab heut erst mit richtiger Shell-Programmierung begonnen und hab schon die ersten Probleme bei if-Bedingungen.

Ich möchte gerne ein Skript schreiben, wie z.B. rcsmb, also ein Skript, dass auf start,stop, restart und status reagiert. Bevor jemand sagt, ich soll nen Extra-Threat eröffnen, das ist fürs Backups-Skript.

Meine Idee war folgende:

Code:
if [ $# > 0 ]
   then
      ....
   elif [ $# = 0 ]
      then
      echo "Parameter angebeben...";
fi

Wo ist der Fehler? Das Skript reagiert überhaupt nicht auf Parameter, ob sie nun eingegeben werden oder nicht. Ich könnte natürlich die zweite Bedingung mit -z bzw. -n arbeiten, aber es kommt mir momentan mehr auf die erste Bedingung an.

Kann mir einer helfen?
 
Oben