Backup per Cronjob in tar.gz

Backup, Restore und Transfer von Daten
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Backup per Cronjob in tar.gz

Post by hammer »

Hallo,

da ich noch mehr oder weniger ein Anfänger bin, bräuchte ich mal bitte eure Hilfe.

Ich mache bis jetzt immer Backups von Hand, wobei ich das komplette HOME-, VAR/LIB/MYSQL- und VAR/NAMED-Verzeichnis jeweils in eine eigene tar.gz packe. Die Dateien lasse ich gleich im Verzeichnis BACKUP erstellen. Zusätzlich kopiere ich nun die Dateien auf einen zweiten Server.

Ich weiß, dass es auch Programme gibt, aber mit denen komme ich nicht klar, denn die funktionieren nicht auf meinem 1&1 Rootserver.

So wie ich es vorhabe muss es ja auch gehen :D

Also ich würde gerne per Cronjob alles regeln, damit ich das nicht per Hand machen muss.

Nur: wie mache ich das? ich kann doch bei einem Cronjob nicht einfach den befehl eingeben, der eine tar.gz erstellt, oder doch? außerdem habe ich den dateien immer namen wie: backup_www_02_04_2003.tar.gz gegeben. d.h. bei dem skript oder was auch immer ich machen müsste, müsste hinten immer das datum angefügt werden.

dann soll die datei ja noch auf einen 2. server gepackt werden. obwohl das nicht sooo wichtig ist, da ich das nicht jeden tag mache, sondern nur alle paar tage. da denke ich mal, wäre es sicherlich schwieriger dem cronjob klar zu machen, dass er z.b. alle 4. tage nur die aktuellste datei rüberkopieren soll...also das kann ich dann ja von hand machen... außerdem weiß ich nicht, wie ich ihm noch klar machen soll, dass er das passwort automatisch eingibt, beim kopieren auf den anderen server...


mir würde es erstmal reichen, wenn mir jemand sagen kann, wie ich das 1. bewerkstelligen kann.

ich verwende folgenden befehl fürs Erstellen der Backups:

tar zcvf backup_www_01_01_2001.tar.gz /home/
tar zcvf backup_mysql_01_01_2001.tar.gz /var/lib/mysql/
tar zcvf backup_named_01_01_2001.tar.gz /var/named/


Viele grüße
hammer
dummi
Posts: 11
Joined: 2003-01-14 00:03
 

Re: Backup per Cronjob in tar.gz

Post by dummi »

Hi,

dazu musst Du zwei Cronjobs anlegen.
1. Erstellen der Dateien
2. Dateien auf einem anderen Server speichern.

Einfachste Methode auf jedem Server ein Cronjob.


Script 1 sieht ungefähr so aus:

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%h%M`
ZIEL= /irgendwo/

tar zcvf ${ZIEL}backup_www_${NAME}.tar.gz /home/ 
tar zcvf ${ZIEL}backup_mysql_${NAME}.tar.gz /var/lib/mysql/ 
tar zcvf ${ZIEL}backup_named_${NAME}.tar.gz /var/named/ 
korrigiert!

Script 2 liegt auf einem anderen Server und sollte dann so aussehen:

Code: Select all

#! /bin/sh
wget -N ftp://user:password@domain:21/backupverzeichnis/ 

Nun musst Du im Cronjob natürlich das passende script aufrufen.

Wenn ich mich jetzt nicht vertippt habe, könnte es so oder ähnlich funktionieren ;)
Last edited by dummi on 2003-07-26 12:26, edited 1 time in total.
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

hi,

danke für die schnelle antwort, werde ich nachher mal testen, aber vorher habe ich noch 2 Fragen:

wie muss das skript heißen? kann es einfach blabla.sh heißen, oder wie muss die endung sein?

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%h%M`.tar.gz 
ZIEL= /irgendwo/ 

tar zcvf ${ZIEL}backup_www_${NAME}.tar.gz /home/ 
tar zcvf ${ZIEL}backup_mysql_${NAME}.tar.gz /var/lib/mysql/ 
tar zcvf ${ZIEL}backup_named_${NAME}.tar.gz /var/named/ 
müsste das nicht so aussehen?? :

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%h%M`
ZIEL= /irgendwo/ 

tar zcvf ${ZIEL}backup_www_${NAME}.tar.gz /home/ 
tar zcvf ${ZIEL}backup_mysql_${NAME}.tar.gz /var/lib/mysql/ 
tar zcvf ${ZIEL}backup_named_${NAME}.tar.gz /var/named/ 
denn wenn in name schon am ende .tar.gz ist und beim erstellen auch, dann hat die datei nachher ja 2mal am ende .tar.gz, oder? ;)


das 2. skript kann ich nicht nutzen, darum hab ich ja geschrieben, ob das danna uch immer die aktuellste datei nimmt.

denn momentan ist ein backup pro tag schon weit über 1 Gb groß. und wird in nächster Zeit noch vieeeel größer. Wenn ich also das ganze Backup-Verzeichnis rüberkopieren lasse, dann kopiert er auch immer die alten Backups mit, was ja Traffic-Verschwendung wäre. Das wären ja nach jedem Tag immer mehr. Dann wären es z.b. am 10.Tag schon 10 GB Traffic und von diesesn 10 Backups sind ja dann schon 9 auf dem 2. Server, d.h. er kopiert die alten immer wieder mit....umsonst....
dummi
Posts: 11
Joined: 2003-01-14 00:03
 

Re: Backup per Cronjob in tar.gz

Post by dummi »

Hammer wrote: wie muss das skript heißen? kann es einfach blabla.sh heißen, oder wie muss die endung sein?
Sollte völlig egal sein. Du rufst es dann ja im Cronjob auf.

müsste das nicht so aussehen?? :

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%h%M`
ZIEL= /irgendwo/ 

tar zcvf ${ZIEL}backup_www_${NAME}.tar.gz /home/ 
tar zcvf ${ZIEL}backup_mysql_${NAME}.tar.gz /var/lib/mysql/ 
tar zcvf ${ZIEL}backup_named_${NAME}.tar.gz /var/named/ 
denn wenn in name schon am ende .tar.gz ist und beim erstellen auch, dann hat die datei nachher ja 2mal am ende .tar.gz, oder? ;)
Richtig! Das ist wie Kopfrechnen. Das kann ich auch nicht *g*
das 2. skript kann ich nicht nutzen, darum hab ich ja geschrieben, ob das danna uch immer die aktuellste datei nimmt.

denn momentan ist ein backup pro tag schon weit über 1 Gb groß. und wird in nächster Zeit noch vieeeel größer. Wenn ich also das ganze Backup-Verzeichnis rüberkopieren lasse, dann kopiert er auch immer die alten Backups mit, was ja Traffic-Verschwendung wäre. Das wären ja nach jedem Tag immer mehr. Dann wären es z.b. am 10.Tag schon 10 GB Traffic und von diesesn 10 Backups sind ja dann schon 9 auf dem 2. Server, d.h. er kopiert die alten immer wieder mit....umsonst....
Ja, er würde jede Datei vom Server holen. Aber nur die neu sind, normalerweise. Also nicht doppelt. Aber wenn Du weisst wie die Datei heisst, dann kannst Du die ja selber zusammenbasteln.

Also beim erstellen die stunde und minute weglassen. Und dann auf dem 2. Server auch mit
NAME= `date +%Y%m%d` den Namen basteln den Du haben willst.


Oder?
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

gut das 1. probiere ich gleich mal aus.

ich denke das 2. könnte man so lösen?

die dateien werden weiterhin mit datum am ende erstellt.

das abholskript man ja so bauen, dass er das datum von heute (also dann wann das skipt aufgerufen wird) nimmt und das dann hintern dran packt, also dass man dann mit wget die datei backup_www_datumvonheute.tar.gz rüberkopieren lässt. dann müsste er ja immer die aktuellste laden, wenn ich den cronjob auif dem 2. server einfach eine stunde später starten lasse, sodass das backup auch 100% auf dem 1. server drauf ist. nur wie mach ich das nun wieder alles? *g*
dummi
Posts: 11
Joined: 2003-01-14 00:03
 

Re: Backup per Cronjob in tar.gz

Post by dummi »

Vielleicht so?

Script 1:

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%`
ZIEL= /irgendwo/ 

tar zcvf ${ZIEL}backup_www_${NAME}.tar.gz /home/ 
tar zcvf ${ZIEL}backup_mysql_${NAME}.tar.gz /var/lib/mysql/ 
tar zcvf ${ZIEL}backup_named_${NAME}.tar.gz /var/named/



Script 2:

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%`
ZIEL= irgendwo/ 
wget -N ftp://user:password@domain:21/${ZIEL}backup_www_${NAME}.tar.gz
wget -N ftp://user:password@domain:21/${ZIEL}backup_mysql_${NAME}.tar.gz
wget -N ftp://user:password@domain:21/${ZIEL}backup_named_${NAME}.tar.gz
Wobei das ganze nun für mich so aussieht, als ob man das noch vereinfachen könnten. Datum vor den Namen, und dann mit '*' hintendran ... aber ohne Garantie ;)

Wenn alles funktioniert, wie Du es Dir erwünscht, dann schreib mal die fertige Lösung hier für alle rein.
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

Also ich habe grade mal einen Cronjob für 12:50 eingerichtet. laut der message.log wurde der auch ausgeführt. aber es sind keine neuen dateien im backup-ordner? also hat er nichts gemacht, ich teste mal eben, ob das skript überhaupt geht :D

edit:

also wenn ich ./backup.sh mache kommt:

-bash: ./backup.sh: permission denied?? muss ich für das skript noch irgendwelche chmods oder chowns setzen?

edit2:

hab nun auf 777 gemacht, dann kommt no file or directory...ich guck mal weiter danach...
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: Backup per Cronjob in tar.gz

Post by krogoth »

versuchs mal mit dem absoluten pfad, den auch in crontab eingetragen hast und chmod 500 haette auch gereicht ;)
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

du meinst: ./backup/backup.sh??? das bewirkt auch nichts... der Fehler muss in der backup.sh liegen denk ich mal... der kann dort wohl nichts taren.... :(

kann jemand nochmal sich den code angegucken, ob er 100% richtig ist? muss ich ´ oder ` ider ' nehmen und muss bei Ziel nicht auch vorne unten hinten ein `, ´ oder ' ?
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: Backup per Cronjob in tar.gz

Post by krogoth »

geh mal in das verzeichnis in dem die backup.sh liegt und gib mal pwd ein, dann hast den absoluten pfad ;)

sag mal, hast du um 12h50 post von crond bekommen?

wie ist die genaue file/directory-not-found-fehlermeldung?
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

um 12:50 wurde der cronjob ganz normal ausgeführ. nur es hat nichts gebracht, da die datei an-für-sich nicht geht.

egal wie und wo ich sie öffne es steht einfach nur da:

:No such file or directory

achso...ich glaube, das bedeutet, dass die datei "backup.sh" keine richtige datei ist, oder? hm...also was stimmt mit der datei nicht? :(
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

hallo??
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: Backup per Cronjob in tar.gz

Post by krogoth »

wie steht denn das backup.sh in der crontab drin?
wie ist der absolute pfad zu der backup.sh?

absoluter pfad = sowas: /home/krogoth/cronjobs/backup.sh

hast du die datei abgetippt oder gecopied & gepasted? also wenn du was hier aus dem forum einfach markierst und einfuegst kann es u.U. so sein, dass da zeichen reinkommen, die die shell nicht versteht.
evtl. hilft es wenn du das script nochmal per hand abtippst
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

hab das script in nen editor gepast und dann hoch geladen....

der absolute pfad lautet: /backup/backup.sh

im Crontab ist es richtig drin, hat er ja auch ausgeführt, aber das ist ja erstmal egal, das Skript an-für-sich klappt ja nicht. Viellicht hat es ja auch Fehler?? Kann es vielleicht nochmal einer richtig posten? und mir nun sagen wie es mit den ' , ´ und ` aussieht? was davon nun richtig ist?

danke
gruß
hammer
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: Backup per Cronjob in tar.gz

Post by krogoth »

ich denke das script ist so wie es da steht korrekt geschrieben, ich denke das problem liegt eher darin, dass da irgendwie noch zeichen reinkommen beim kopieren, die der editor zwar nicht anzeigt, die shell aber sehr wohl versucht zu interpretieren, daher koennte das script deswegen nicht funktionieren.

wenn etwas in einem shell-script in ´ ´ eingefasst wird, wird dies dazwischen ausgefuehrt und das was dann normalerweise an der konsole landen wuerde, wird in der variable gespeichert.
wenn etwas zwischen ' ' eingefasst ist, ist das normaler text.
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

also ich habe folgendes gemacht:

Notepad geöffnet, dort:

Code: Select all

#! /bin/sh 
NAME= `date +%Y%m%d%h%M`
ZIEL= /backup/

tar zcvf ${ZIEL}backup_www_${NAME}.tar.gz /home/
tar zcvf ${ZIEL}backup_mysql_${NAME}.tar.gz /var/lib/mysql/
tar zcvf ${ZIEL}backup_named_${NAME}.tar.gz /var/named/
eingeben diese Datei dann mit WS_FTP Pro in den Ordner Backup hochgeladen (per Shell-Zugriff). Ich habe es sowohl im binären als auch im ASCII- Modus hochgeladen, beides hat nicht geklappt.

Tja und wenn ich die Datei nun ausführen will kommt diese Fehlermeldung immer:

Code: Select all

: No such File or Directory
der Inhalt der Datei sieht auf dem Server auch genauso aus , wie die Datei vor dem hochladen, hab also alles kontrolliert....

Mal eine Frage: Ist es normal, wenn ich die backup.sh mit dem integrierten Editor von MC öffne, dass er die 1. Zeile wo #! /bin/sh steht, schwarz hinterlegt? Beudeutet das etwas? dass vielleicht hier der Fehler liegt?
dummi
Posts: 11
Joined: 2003-01-14 00:03
 

Re: Backup per Cronjob in tar.gz

Post by dummi »

Wie führst Du denn dein Script aus?

Wenn Du per ssh drin bist, dann musst Du das Script so aufrufen:

/backup/backup.sh

Weiterhin solltest Du Scripte am besten direkt auf dem Server schreiben.
Entweder mit vi oder emacs, oder einem anderen Editor, der installiert ist.
Dann geht auch nix schief mit dem Ã?bertragen.
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

Aussführen tu ich es mit ./backup.sh bzw. ./backup/backup.sh, anders kann man es nämlich nicht ausführen ;) außerdem hab ich es auch schon versucht es mit dem Midnight Commander zu öffnen....
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

Kann mir denn nun bitte jemand helfen?

Es kann doch nicht sein, dass es keine Möglichkeit gibt, jeden Tag einen Ordner in eine .tar.gz-Datei packen zulassen per Cronjob... :?:
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal
 

Re: Backup per Cronjob in tar.gz

Post by thorsten »

mach nochmal ein dos2unix $scriptname
wenn das nix hilft, schreib jeden Befehl mit vollem Pfad in das Script.
hammer
Posts: 47
Joined: 2003-07-26 09:54
 

Re: Backup per Cronjob in tar.gz

Post by hammer »

"mach nochmal ein dos2unix $scriptname "

was ist das? wie mache ich das?


"wenn das nix hilft, schreib jeden Befehl mit vollem Pfad in das Script."

hab ich ja.... :(

am anfang des threads ist ja ein skript gepostet worden, welches aber einfach nicht funktionieren will... :(
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal
 

Re: Backup per Cronjob in tar.gz

Post by thorsten »

dos2unix backup.sh
Das wandelt dir die Zeilenenden auf jeden Fall so um, wie du sie brauchst.
Gewöhn dich an einen Linux Editor, falls da der Fehler lag.

Poste nochmal dein Script mit vollen Pfadangaben.
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: Backup per Cronjob in tar.gz

Post by nn4l »

@Hammer:

Nimm mal die Leerzeichen raus, dann geht's.

Code: Select all

#!/bin/sh
NAME=`date +%Y%m%d%h%M`
ZIEL=/backup/
]neo[
Posts: 12
Joined: 2003-08-27 18:33
Location: 127.0.0.1
 

Re: Backup per Cronjob in tar.gz

Post by ]neo[ »

so nice :o)
ich hab hier auch mal nen bissel was gemacht frage mich aber warum das net funzt :-(

Code: Select all

#! /bin/sh

#Verzeichnis wo er die Backup`s Erstellt!
BACKUP= /root/backup/
#Verzeichnis wo er die Backup`s uploaden soll
UPLOADDIR= /html/backup/
#IP Adresse wo der FTP server läuft
HOST=019.086.686.6
#Port des FTP`s (Standart ist 21)
PORT=21
#User für FTP
USER=backup1
#Passwort des Users
PW=m00h
#Tages Angabe etc. So weiß man wie alt sein Backup ist ;o :P
DATE= `date +%Y%m%d%` 

#Ab jetzt nichts mehr ändern :P

echo BackUp script Startet....

tar zcvf ${Backup}backup_www_${DATE}.tar.gz /home/ 
tar zcvf ${Backup}backup_mysql_${DATE}.tar.gz /var/lib/mysql/ 
tar zcvf ${Backup}backup_named_${DATE}.tar.gz /var/named/

echo Backup Daten wurden Erfolgreich erstellt!

#So nun kommt der Transfer der Daten zum BackupServer

ftp connect ${HOST} ${PORT} user ${USER} ${PW} send /${BACKUP}backup_www_${DATE}.tar.gz ${UPLOADDIR} quit
ftp connect ${HOST} ${PORT} user ${USER} ${PW} send /${BACKUP}backup_mysql_${DATE}.tar.gz ${UPLOADDIR} quit
ftp connect ${HOST} ${PORT} user ${USER} ${PW} send /${BACKUP}backup_named_${DATE}.tar.gz ${UPLOADDIR} quit

echo ------------
echo Fertig, wenn keine Fehler auftraten *gg* hrhr, NoBody is Perfekt
echo ------------
chmod sind 777, plz help

{edit} ich nimm mal die leerzeichen oben raus *gg* {/edit}
{edit2} ney tut net {/edit2}
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: Backup per Cronjob in tar.gz

Post by nn4l »

ftp funktioniert halt anders.

man ftp
Post Reply