Backup einzelner Verzeichnissse auf 2 Festplatte

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Backup einzelner Verzeichnissse auf 2 Festplatte

Beitrag von Ely » 28.05.2005 23:49:06

Hallo zusammen,

da ich noch nicht so viel Erfahrung mit Linux habe, also ein Neuling, frage ich hier mal nach Hilfe und hoffe das Ihr mir helfen könnt.

Ich habe einen Debian Server am laufen indem ich nun eine zweite Platte einsetzten möchte. Auf dieser 2. HDD möchte ich vie Script oder Cronjob (ich weiß halt nicht wie) Verzeichnisse automatisch sichern lassen. Zum Beispiel das Verzeichniss WWW soll jede Nacht um 02:00 komplett auf die 2. HDD kopiert werden. Wie setzte ich das am besten um und kann es da zu Problemen kommen, da es ja im laufendem Betreib ist?

Ein weiterer Wunsch wäre, das wenn dies z.b. via Script zu realisieren ist, dass immer 3 Tage gesichert werden und dann das älteste gelöscht wird. Also müsste das ganze ja gepackt werden, mit Datum im Dateinamen versehen und dann abgelegt werden. Vermute ich zumindest :?

Gibt es diesbezüglich eine Lösung und kann mir hier jemand weiterhelfen?

Danke
Ely
Zuletzt geändert von Ely am 06.06.2005 10:45:24, insgesamt 2-mal geändert.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 29.05.2005 00:29:14

hmm.. ja also.. als Tool zum Archivieren benutzt du einfach mal und ein Skript, was das alles macht:

Code: Alles auswählen

#!/bin/bash

DATUM=$(date '+%d.%m.%Y')
SAVEDIR=/var/www
NAME=www-apache
ZIELVERZ=/mnt/irgendwas

tar cf $ZIELVERZ/$DATUM-$NAME.tar

for i in `ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'`
do
 rm -f $ZIELVERZ/$i
done
IST ABER UNGETESTET UND DAHER VORSICHTIG SEIN!!!!!!!!

das kannst du dann als Cronjob laufen lassen..

Code: Alles auswählen

crontab -e
zum editieren deiner Crontab +

Code: Alles auswählen

man crontab
um das zu verstehen
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 29.05.2005 07:17:31

Hallo Ely,
erstmal herzlich wilkommen hier im Forum :wink:

Eine fertige Lösung habe ich nicht, nur Linktipps...
http://www.debianforum.de/wiki/?page=Ei ... Cr+Backups
http://www.rootforum.de/forum/viewtopic.php?t=16846
http://www.rootforum.de/forum/viewtopic ... light=find

...je nachdem für welche Lösung Du Dich entscheidest (übernehmen, oder eine eigene anpassen), testweise Rüchsichern nicht vergessen :wink:

Gruß fuzzy

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 29.05.2005 22:46:10

²fuzzy

Danke für die nette Begrüßung, die Links und den Tip :)

²Savar

So teilweise verstehe ich das Script und ich hoffe, das es okay ist, wenn ich diesbezüglich noch Fragen stelle.

Denn diese Abschnitt verstehe ich nicht. Was bewirkt dieser?

Code: Alles auswählen

for i in `ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'` 
do 
 rm -f $ZIELVERZ/$i 

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 29.05.2005 22:59:44

Code: Alles auswählen

for i in 
nimmt das was dahinter kommt , z.B. 1 2 3 und in jedem durchlauf ist dann beim ersten mal in der Variablen $i eine 1, dann eine 2 und zuletzt eine 3

also

Code: Alles auswählen

for i in 1 2 3
do
   echo $i
done
Ausgabe:

Code: Alles auswählen

1
2
3

das

Code: Alles auswählen

`ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'`
ist ein weiterer Befehl, der eine Liste aller Dateien, die wie der Inhalt der Variablen $NAME heißen (zumindest das in ihrem Namen haben).. dabei wird nach Erstellzeitpunkt sortiert.. und das "sed" dahinter schneidet die ersten 5 Zeilen aus (die ersten beiden sind zusatzinfos) so das du also eine Liste mit allen Dateien kriegst, bis auf die drei neuesten...

danach löscht er halt die Dateien
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 29.05.2005 23:07:40

Wow, danke für die ausführliche Erklärung. Ich denke das habe ich verstanden.

Ich werde dies mal testen und wenn ich dann noch auf Fragen stoße, werde ich mich sicherlich noch einmal melden.

Danke.

Gruß
Ely

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 29.05.2005 23:32:07

Hallo Ely,
aus meiner Sicht fehlt noch die "SAVEDIR" im Script, Savar hatte ja gesagt, dass es noch ungetestet ist :wink:
entsprechende Zeile:

Code: Alles auswählen

/bin/tar cf $ZIELVERZ/$DATUM-$NAME.tar  $SAVEDIR
<pingelmodus>
es wird empfohlen in scripten mit absoluten Pfaden zu "hantieren" also "/bin/tar" statt "tar" usw.
</pingelmodus>

Gruß fuzzy

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 30.05.2005 00:05:36

Hallo Fuzzy,

danke für den Hinweis. Ist mir gar nicht aufgefallen. Ich werde es morgen mal testen ob es funktioniert :)

Schönen Abend noch

Gruß
Ely

ChandlerBing
Beiträge: 95
Registriert: 01.06.2004 13:54:02

Re: Backup einzelner Verzeichnissse auf zweite Festplatte

Beitrag von ChandlerBing » 30.05.2005 12:21:33

Ely hat geschrieben:(...) und kann es da zu Problemen kommen, da es ja im laufendem Betreib ist?(...)
Das würde mich auch interessieren!
Ich mache momentan auch jede Woche ein komplettes Backup eines Rechners im laufenden Betrieb, indem ich per rsync die gesammte root-Partition auf eine zweite sichere.
Ich musste das Backup aber noch nie zurückspielen, deswegen weiß ich nicht, ob das überhaupt brauchbar ist.

Eigentlich müsste das Backup ja inkonsistent sein, denn während des Backups werden ja sicher noch einige Dateien verändert.
Die Frage ist nur, ob das schlimm ist.

Hat jemand Erfahrungen damit?

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 30.05.2005 13:03:34

es kommt immer darauf an was gebackupt wird..

das Grundsystem wird keine Probleme bereiten und vernünftig booten..
eine MySQL Datenbank jedoch könnte, wenn sie gesichert wird und währenddessen eine Änderung erfolgt, beschädigt werden, daher sollte man diese eher per "mysqldump" sichern oder nachts wenn man es vertreten kann per cron stoppen (also den mysql-server) und dann halt kopieren...

prinzipiell alle wichtigen Daten die während des kopierens geändert werden könnten, sind ein Problem... dann muss man schauen was man eigentlich hat, was sich ändert und wichtig ist
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

ChandlerBing
Beiträge: 95
Registriert: 01.06.2004 13:54:02

Beitrag von ChandlerBing » 30.05.2005 13:32:24

Savar hat geschrieben:es kommt immer darauf an was gebackupt wird..

das Grundsystem wird keine Probleme bereiten und vernünftig booten..
Das klingt ja schon mal gut! ;)
Savar hat geschrieben:eine MySQL Datenbank jedoch könnte, wenn sie gesichert wird und währenddessen eine Änderung erfolgt, beschädigt werden, daher sollte man diese eher per "mysqldump" sichern oder nachts wenn man es vertreten kann per cron stoppen (also den mysql-server) und dann halt kopieren...
Klar, ne MySQL Datenbank würde ich eh nochmal extra sichern. Mails sichere ich auch extra.
Es geht eigentlich nur um das System selbst...

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 30.05.2005 13:37:44

ansonsten versuch das System doch einfach auf einem anderen Rechner zu installieren.. zum Testen
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 30.05.2005 20:48:28

Irgendwie habe ich doch noch Schwierigkeiten und benötige Hilfe.

Ich bin nun hergegangen und habe das Script angepasst

Code: Alles auswählen


#!/bin/bash 

DATUM=$(date '+%d.%m.%Y') 
SAVEDIR=/var/www 
NAME=www-apache 
ZIELVERZ=/mnt/backup 

/bin/tar cf $ZIELVERZ/$DATUM-$NAME.tar $SAVEDIR 

for i in `ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'` 
do 
 rm -f $ZIELVERZ/$i 
done

Dann habe ich im Verzeichniss mnt das Verzeichniss backup angelegt.

Danach habe ich das Script als Datei auf den Server geladen (/root). Die Datei habe ich backup genannt und via Webmin einen Cronjob eingerichtet welcher so aussieht:

@daily /root/backupscript

Wenn ich nun den Cronjob manuell ausführen möchte, erhalte ich diese Fehlermeldung:

/bin/sh: /root/backupscript: /bin/bash: bad interpreter: Permission denied

Was mache ich falsch.

Dateiname falsch?
Fehlt ein Befehlt im Cronjob?
Datei am falschem Ort?
Rechte falsch?

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 30.05.2005 23:44:16

Hallo Ely,
so "aus der Entfernung" kann ich Dir leider nicht sagen, was schief läuft,
ich tippe auf fehlende Rechte - der ausführende braucht mindestens das Recht zum lesen (r) und ausführen (x).
Da ich Webmin nicht kenne, etc, versuche ich mal ein einfaches "Cronbeispiel",
es erzeug die Ausgabe von "date" in eine Textdatei "test-cron.txt" in "/tmp" und dieses jede Minute :wink:

Code: Alles auswählen

sid:/tmp# cat /usr/local/bin/test-shellscript 
#!/bin/bash

/bin/date  >> /tmp/test-cron.txt
sid:/tmp# chown root:root /usr/local/bin/test-shellscript 
sid:/tmp# chmod 700  /usr/local/bin/test-shellscript 
sid:/tmp# ls -l  /usr/local/bin/test-shellscript 
-rwx------  1 root root 46 2005-05-30 23:09 /usr/local/bin/test-shellscript

sid:/tmp# crontab -e
crontab: installing new crontab
sid:/tmp# crontab -l

* * * * *  /usr/local/bin/test-shellscript

sid:/tmp# cat   /var/log/syslog |  grep test-shellscript
[...]
May 30 23:33:01 sid /USR/SBIN/CRON[7905]: (root) CMD (/usr/local/bin/test-shellscript)

sid:/tmp# cat test-cron.txt 
[...]
Mon May 30 23:33:01 CEST 2005
Mon May 30 23:34:02 CEST 2005
[...]
Ich hoffe das ist nachvollziehbar, danach würde ich den Cronjob und das Script an die Backuplösung anpassen :wink:

Gruß fuzzy

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 31.05.2005 08:54:15

Ich hatte der Datei chmod 0755 gegeben. daran kann es wohl nicht liegen.

Es ist aber korrekt, das ich der Datei KEINE Dateiendung gebe?

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 31.05.2005 09:07:43

Hallo Ely,
äh, möglicherweise gibt es da auch "Standards" oder Empfehlungen :wink:
...es mag auch sein, dass "*.sh" üblich ist, für das Funktionieren sind aus meiner Sicht die Rechte, Pfade etc. entscheidend.

Gruß fuzzy
Zuletzt geändert von fuzzy am 31.05.2005 10:48:37, insgesamt 1-mal geändert.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 31.05.2005 09:22:01

mach mal

Code: Alles auswählen

which bash
und schaue ob du überhaupt die Bash hast!
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 31.05.2005 09:35:11

Savar hat geschrieben:mach mal

Code: Alles auswählen

which bash
und schaue ob du überhaupt die Bash hast!
jupp, habe ich ( /bin/bash )

²Fuzzy

Ja da hast Du sicherlich recht.

²Fuzzy & Savar

Ist es denn okay wenn ich das Script in das Verzeichniss root packe? Eigentlich dürfte das doch egal sein, solange die Pfadangaben stimmen?!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 31.05.2005 09:38:11

steht in der ERSTEN Zeile des Skriptes

Code: Alles auswählen

#!/bin/bash
??

und was passiert wenn du mal

Code: Alles auswählen

bash /root/backup
machst?
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 31.05.2005 20:36:09

Ja dies steht in der ersten Zeile.

Wenn ich das so mache bekomme ich folgende Meldung:

/bin/tar: Removing leading `/' from member names

Nach einer Weile ist eine Datei im Verzeichnis mnt die sich 31.05.2005-www-apache.tar nennt aber von der Größe absolut nicht stimmen kann.

Wenn ich in die Datei schaue via mc, sehe ich, das nicht alles archiviert wurde. Lediglich web0 bis web2. Es müste aber zum jetzigen zeitpunkt bis web24 gehen.

Auch ist mir aufgefallen, das die Datei nicht gepackt ist. Im Script finde ich diesbezüglich auch nichts.

Was müsste ich noch einfügen in das Script, damit sie gz gepackt wird?

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 31.05.2005 20:44:58

ändere mal folgende Zeile

Code: Alles auswählen

/bin/tar cf $ZIELVERZ/$DATUM-$NAME.tar  $SAVEDIR

Code: Alles auswählen

/bin/tar cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  $SAVEDIR/*
das "j" sagt tar, das er das ganze anschließend mit bzip2 packen soll (muss natürlich installiert sein)..

warum nicht alles gesavet wurde, weiß ich nicht.. vielleicht hilft das "/*" am Ende der Zeile
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 31.05.2005 21:17:49

hmmm

keine Ausgabe in mnt, dafür das:
:~# bash /root/backup
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
/bin/tar: Removing leading `/' from member names
/bin/tar: /dev/log: socket ignored
/bin/tar: /proc/2/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/3/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/4/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/5/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/6/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/29/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/101/exe: Cannot readlink: No such file or directory
/bin/tar: /proc/6290: Cannot stat: No such file or directory
/bin/tar: /proc/6331/fd/3: Cannot stat: No such file or directory
/bin/tar: /proc/6333: Cannot stat: No such file or directory

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 31.05.2005 21:19:53

ich seh gerade das im /

sich ein datei befindet, die sich: -.tar.bz2 nennt :(

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 31.05.2005 22:19:08

poste mal das gesamte Skript entweder hier oder wenns zu lang ist auf nopaste.debianforum.de
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Ely
Beiträge: 25
Registriert: 22.05.2005 16:34:47
Kontaktdaten:

Beitrag von Ely » 31.05.2005 23:43:59

Code: Alles auswählen

#!/bin/bash 

DATUM=$(date '+%d.%m.%Y') 
SAVEDIR=/var/www 
NAME=www-apache 
ZIELVERZ=/mnt/backup 

/bin/tar cjf $ZIELVERZ/$DATUM-$NAME.tar.bz2  $SAVEDIR/* 

for i in `ls -1t $ZIELVERZ *$NAME* | sed -n '5,$p'` 
do 
 rm -f $ZIELVERZ/$i 
done

Antworten