Webspace Backups

veganxpussy

Aktives Mitglied
Thread Starter
Dabei seit
25.06.2007
Beiträge
188
Reaktionspunkte
0
Hallo,

Nach einem Providerwechsel musste ich leider feststellen, dass die Herrschaften keine Backup-Funktion anbieten.

Mysql Backups sollten mit mysqldumper kein Problem sein

Wie aber kann ich Webspace Backups erstellen?

Vielen Dank!
 
Wenn Du Shellzugriff hast mach nen TAR-Ball draus und zippe es mit gzip. Das kannst Du Dir dann runterladen.
Wenn nicht würde ich versuchen es mit SCP üer Terminal zu bekommen. Zur Not eben per FTP als allerletzter Versuch.

Gruß Malte
 
vielen Dank für deine Antwort

was ist ein Shellzugriff?
bzw wie geht das mit dem TAR-Ball?
 
Hmm,
normalerweise kann man seine Daten per FTP hochladen. Shellzugriff bedeutet quasi Terminal.app für den Remotezugriff.
Der Befehl lautet "ssh" was Secure Shell bedeutet. Such mal im Netz danach. Einen TAR-Ball bilden heisst mit dem Befehl "tar" Dateien zusammenpacken und mit dem Befehl "gzip" komprimieren. Auch alles im Netz zufinden.
Gruß Malte
 
nur um das nochmal zu erwähnen,

ich möchte Backups von meinem Webspace auf meiner Festplatte machen!

deine Variante hört sich irgendwie umgekehrt an
 
Nein das hab ich schon richtig verstanden.
Deswegen eine Shell auf Deinem Webspace. Wenn Du einen Shellzugriff auf Deinen Webspace hast, dann kannst Du dort alles zusammenpacken und zippen und diese Datei dann runterladen und hast den ganzen Kram auf Deiner Platte.
Wenn das nicht geht versuche es mit SFTP oder FTP. Der Aufwand ist dann aber etwas größer.

Gruß Malte
 
kann man das auch automatisieren, so dass das jeden Tag automatisch gemacht wird?
MacBook ist auch den ganzen Tag an

Shell Zugriff habe ich, aber begrenzt
welchen Client würdest du empfehlen?
 
Klar, das könnte man automatisieren. Wenn Du Shell-Zugriff hast kannst Du Dir das mit dem MySQL-Dumper auch sparen und vor dem zippen (tarball) per mysqldump alle Daten in ein SQL-File schreiben und ebenfalls ins Backup legen. Dann hast Du alles beisammen und nicht verstreut.
 
kannst du mir genauer erklären, wie ich das mache?

hab mit Shell-Zugriff und so noch keine Erfahrung
 
Ich umreisse es mal grob:

Unter Dienstprogramme findest Du Terminal.app. Wenn Du das Programm startest erhältst Du eine Eingabeaufforderung. Per SSH kannst Du Dich zu Deinem Server folgendermassen verbinden:
Code:
ssh -l DEIN-NUTZER-NAME deine-domain.de
Hinter dem ersten - das ist ein kleines L, keine 1. :) Der Nutzername den Dir Dein ISP zugewiesen hat musst Du dahinter eintragen und natürlich den Domain-Namen bzw. die IP des Servers mit dem Du Dich verbinden willst.
Hier stellt sich nun auch erstmal heraus ob Dir Dein ISP zugriff per SSH erlaubt oder nicht.
Führst Du den Befehl aus wirst Du noch nach Deinem Passwort gefragt.
Versuch das erst mal soweit. Muss hier nebenbei noch selbst etwas arbeiten. ;)
 
ok das kam:
HTML:
The authenticity of host 'xxx.com (xxx.xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx:01:ab:xxx.uswusf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx.com,xx.xx.xx.xx' (RSA) to the list of known hosts.
Password: 
-bash-3.1$

bei meinem Hoster steht noch das im Panel:

Wenn Sie sich mit Linux auskennen und direkt auf die Shell Ihres Webservers zugreifen möchten, benötigen Sie einen Client für den verschlüsselten Shell Zugang - einen sicheren Secure-Shell-Client (SSH).

Der unverschlüsselte Telnet-Zugang ist auf unseren Systemen aus Sicherheitsgründen NICHT möglich.
 
Das sieht schon mal gut aus. Die bedrohliche Meldung ist OK und normal bei der ersten Verbindung. Wird bzw. darf nicht noch mal kommen.
Als nächstes versuch mal ein Backup von Deiner Datenbank zu ziehen:
Code:
mysqldump --user=MYSQL-NUTZERNAME --password=MYSQL-PASSWORT --opt --add-drop-table --complete-insert --compress --extended-insert --no-create-db  DATENBANKNAME > DATEI.sql
Die grossgeschriebenen Wörter musst Du natürlich wieder ersetzen. Anstelle von DATENBANKNAME kannst Du auch "--all-databases" einsetzen, dann werden alle Datenbanken gesichert.
Bei DATEI notierst Du den Dateinamen in dem die Sicherung gespeichert werden soll. Hier kannst Du auch einen Pfad angeben. Du solltest die Datei auf keinen Fall im Document-Root des Webservers ablegen, sonst kann theoretisch jeder die Datei herunterladen. Am besten speicherst Du die Datei in Deinem Home-Verzeichis. "~/DATEI.sql".

Dann sehen wir weiter. :)
 
also ich hab das gemacht

geb den befehl ein,a ber da passiert nix
 
ah mein fehler, die sql datei befindet sich auf dem webspace

und jetzt?
 
Sehr gut. Läuft ja wie geschmiert. Jetzt wird das Päckchen geschnürt. Wir speichern den Inhalt Deines Document-Root in einem Tarball
Code:
tar -cvf ~/backup.tar /pfad/zu/deinem/document_root/*
Das erstellt die Datei backup.tar in Deinem Home-Ordner. Da fehlt natürlich noch das MySQL-Backup von eben. Das fügen wir noch manuell hinzu:
Code:
tar -f ~/backup.tar -r ~/DATEI.sql
Und da wir etwas Platz sparen wollen komprimieren wir die Datei noch:
Code:
gzip ~/backup.tar
Pfade/Dateinamen müssen hier wieder angepasst werden. Nun solltest Du eine Datei namens backup.tar.gz in Deinem Home-Ordner haben.

Wie man die Datei nun am günstigsten runterlädt weiss ich auch nicht. Vlt. kann man das irgendwie dirket per SSH machen. Da kenne ich aber keine Möglichkeit. Vlt. kann dazu jemand anderes noch was ergänzen. :)

Vorerst würde ich Datei per FTP runterladen. Das können wir auch direkt im Terminal machen:
Wir schliessen die SSH-Session...
Code:
exit
...und verbinden uns per FTP mit dem Server
Code:
ftp DEIN-NUTZERNAME@DEINE-DOMAIN.com
Du wirst wieder nach Deinem Passwort gefragt.

Jetzt laden wir die Datei herunter:
Code:
cd ~
get backup.tar.gz
Zu guter letzt löschen wir noch die Dateien online. Die nehmen ja nur Platz weg:
Code:
delete backup.tar.gz
delete DATEI.sql
Das sollte es gewesen sein. :)

Zum automatisieren: Erst mal müsste man die ganzen Befehle in einem Script sammeln. AppleScript wäre da sicher ideal. Damit kenne ich mich aber nicht wirklich aus. :) Ich schau mal ob ich da auf die Schnelle was hinbekomme. Wäre immerhin auch interessant für mich. :)
 
Hallo,

so jetzt hast Du die Datei irgendwo auf Deinem Webspace liegen.
Geh in das Hauptverzeichnis, also das in dem Du landest, wenn Du sich per ssh anmeldest.
Dann gibt als Befehl ein:
Code:
tar -cpzf BACKUP_DATUMSANGABE.tar.gz *

Damit wird eine Datei erstellt mit dem Namen "BACKUP_DATUMSANGABE.tar.gz". In diese Datei wird alles reingepackt was in diesem Verzeichnis liegt. Da es Dein Hauptverzeichnis ist, alle Dateien und Verzeichnisse und deren Inhalt (auch mehrere Unterverzeichnisse).
Die Parameter -cpzf bedeuten:
Code:
-c  = create
-p  = preserve-permissions (gleiche Besitzer und Rechteinformationen)
-z  = Inhalt mit gzip komprimieren
-f  = File; also welches File, in Deinem Fall alles = *
Dann rödelt der Server, je nach Menge und Größe der Daten, einige Zeit rum und packt alles ein.
Wenn der Prozess fertig ist, dann findest Du im gleichen Verzeichnis die Backupdatei.
Wichtig:
Wenn das Verzeichnis im Web zugänglich ist, dann kann JEDER diese Datei runterladen wenn er weiss wie sie heisst.
Also lade sie runter und lösche sie nachdem Du den Inhalt auf Deinem lokalen Rechner geprüft hast.
Die Datei findest Du unter Deiner Webadresse, wenn das Verzeichnis in dem sie liegt dort verfügbar ist. Wenn nicht musst Du das per FTP erledigen.
Das ist nur eine grobe Erklärung, alle Erklärungen findest Du detailiert mit
Code:
man mysqldump
man tar
oder im Netz.
Beschäftige Dich damit und lese nach wie das geht. Wenn Du einen Fehler machst, kannst Du Dir alles zerschiessen, wenn es dumm läuft. Ich möchte dafür keine Garantie geben, weitergehende Tipps musst Du Dir erarbeiten.
Such nach Skripten für Linux, die Backups erstellen. Den tar Befehl nutze ich auf meinem Server, aber wenn Du das automatisiert haben willst solltest Du dich mit Shellprogrammierung, zumindest den Basics, auseinander setzen.
Viel Erfolg
Gruß Malte
 
Zuletzt bearbeitet:
ok vielen dank ihr beide

werd das morgen dann ausprobieren

eine automatisierung wäre echt noch der megahit ;)
 
Hab das gerade mal mit AppleScript versucht. Nach anfänglichen Schwierigkeiten denke ich jetzt dass es machbar sein müsst. Habe aber jetzt erst mal keine Zeit mich damit zu befassen. Vlt. die Woche noch...
 
Beim Fersehen ist mir gerade noch eine andere Idee gekommen und hier ist eine funktionierende Lösung. :)
Code:
#!/usr/bin/expect -f

set SSH_SERVER "xxx"
set SSH_USER "xxx"
set SSH_PASSWORD "xxx"

set MYSQL_SERVER "localhost"
set MYSQL_USER "xxx"
set MYSQL_PASSWORD "xxx"

set FTP_SERVER "xxx"
set FTP_USER "xxx"
set FTP_PASSWORD "xxx"

set DOCUMENT_ROOT "/home/dms/www/"

set timeout -1

#login per SSH
spawn ssh $SSH_USER@$SSH_SERVER
expect "password:"
send "$SSH_PASSWORD\r"
expect "Last login"
send "mysqldump --host=$MYSQL_SERVER --user=$MYSQL_USER --password=$MYSQL_PASSWORD --opt --add-drop-table --complete-insert --compress --extended-insert --no-create-db --all-databases > ~/backup.sql && tar -cf ~/backup.tar $DOCUMENT_ROOT* && tar -f ~/backup.tar -r ~/backup.sql && gzip ~/backup.tar && echo \"READY\"\r"
expect "READY"
send "exit\r"
expect "closed"

#login per sftp
spawn sftp $FTP_USER@$FTP_SERVER
expect "password:"
send "$FTP_PASSWORD\r"
expect "sftp>"
send "get backup.tar.gz\r"
expect "sftp>"
send "rm backup.sql\r"
expect "sftp>"
send "rm backup.tar.gz\r"
expect "sftp>"
send "exit\r"
exit

Das ganze als "backup.exp" abspeichern und im Terminal per
Code:
expect backup.exp
aufrufen.
Die Zugangsdaten für SSH, FTP und MySQL habe ich in getrennten Variablen untergebracht. Ist bei vielen Hostern ja nicht identisch.

In dem kleinen Script fange ich keine Fehler ab. Habe das einfach nur schnell hingewuselt so dass es für meinen eigenen Server funktioniert. Möglicherweise müssen die expect-Kommandos bei Dir angepasst werden. Zudem habe ich das ganze von FTP auf SFTP umgestellt.

Automatisieren kannst Du das ganze nun z.B. per Lingon
 
Zurück
Oben Unten