Laden...

Datensicherung eines gemieteten vServers: Wie? Womit?

Erstellt von Ahrimaan vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.169 Views
A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren
Datensicherung eines gemieteten vServers: Wie? Womit?

Hallo zusammen,

ich habe einen vServer angemietet. Ich möchte den nun ab und an sichern. Gibt es ein gutes Sicherungsprogramm was Linux im laufendem Betrieb sichern kann ohne wirklichen Physikalischen Zugriff ? Ich habe mal das Hauseigene von Linux genutzt , dieses warnt micha ber sofort, dass es nicht alles sichern kann, da die Hauptplatte gemountet ist.

Viele Grüße

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo,

mit rsync kannst du das machen.
Ich verwende rsync um ausgewählte Verzeichnisse einmal täglich (per cron) auf ein externes Backup Laufwerk zu sichern.

Aber was meinst du mit "ohne wirklichen physikalischen Zugriff"?

Wenn du mir genau sagst, was du alles sichern möchtest, kann ich dir evtl. sogar ein Script dafür geben oder dir eins schreiben. Das komplette System (also alle Verzeichnisse) zu sichern, macht meiner Meinung nach keinen Sinn.

Gruß,
Felix

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hi, danke für die Antwort.
Naja ich habe nur per SSH Zugriff auf die Dateien.
Ich möchte aber sehr gerne die wichtigsten funktionalitäten sichern (Configs der Mailserver und Webserver) usw.
sodass ich bei einem Ausfall oder Wechsel des Hoster meine alte Config aktivieren kann.

Grüße

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo,

das ist gar kein Problem. Du bräuchtest nur ein Speichermedium, wo die Sicherungen abgelegt werden. Wenn du keins hast und die Sicherungen bei dir lokal ablegen möchtest, dann lässt sich das mit rsync (soviel ich weiß) auch realisieren.

Für mich wäre also interessant zu wissen, wo du die Sicherungen ablegen möchtest und in welchem Interval du sichern möchtest.

A
Ahrimaan Themenstarter:in
350 Beiträge seit 2010
vor 12 Jahren

Hi,
ja ich muss es lokal ablegen, kein Sicherungsmedium vorhanden und der Intervall sollte 1x Wöchentlich sein

Grüße

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo,

du kannst dir schonmal das hier anschauen:
Backup mit RSYNC
Komfortables Backup-Skript (rsync)

Da wird zwar nicht beschrieben, wie man das ganze auf ner Windows Kiste sichert, aber zumindest kannst du damit schonmal bestimmte Verzeichnisse auf dem Server sichern. Vorerst könntest du das Backup dann beispielsweise per SFTP abholen.

Aber wenn du hauptsächlich Konfigurationsdateien sichern möchtest, macht es dann überhaupt Sinn, das Backup jede Woche durchzuführen? Ändert sich denn so oft etwas an diesen Dateien?

S
324 Beiträge seit 2007
vor 12 Jahren

So.. Dann will ich als alter Linux-Papa und Backup-Frickler auch mal ein paar Ideen und Konzepte nach werfen 😃

Sicherung mit Rsync
Als erstes mal ist rsync vermutlich immer noch eines mit von den besten Programmen unter Linux mal "schnell" ein paar Dateien mit einem Backup-Server Synchron zu halten (oder in einem anderen verzeichnis auf der Lokalen Platte, wenn man keinen Backup Server hat, wobei das eher weniger Sinn macht, wenn man davon ausgeht das man ein backup dafür macht, dass man es im Falle eines Server/Platten Crashs wiederherstellen möchte).

Um ein Verzeichnis mit Rsync (über SSH) auf einen anderen Rechner zu sichern kann man z.b. sowas machen:


rsync -e 'ssh -p[PORT]' -avz --exclude-from=/pfad/zum/rsync_exclude_file meinserver.de:/wichtiges/lokales/verzeichnis/ /sicherungs_verzeichnis/auf/remote_server/ >> /tmp/sicherung.log 2>&1

In einem Konkreten beipsiel würde das z.b. so aussehen:


rsync -e 'ssh -p22' -avz --exclude-from=/root/scripte/rsync_exclude meinserver.de:/srv/ /home/srv_sicherung/ >> /tmp/sicherung.log 2>&1

In der Exclude Liste kann man dann alle verzeichnisse angeben, welche NICHT gesichert werden sollen.
Rsync erstellt eine Liste von Allen Dateien und vergleicht diese mit der Sicherung - danach überträgt er nur die Dateien (oder änderung an Dateien) welche sich zur Sicherung geändert haben.

Rsync kann auch Lokale Verzeichnisse syncronisieren - der aufruf ist dabei der selbe, nur ohne SSH, portangabe und Server 😃

Sicherung mit tar/bz2/FTP

Eine andere Möglichkeit ist eine Lokale Sicherung durch packen der Daten in eine komprimierte Datei und/oder dieses an einen FTP Server zu senden.

In diesem Beispiel möchte ich wieder /srv sichern.

tar -cvjf /home/sicherung/srv.tar.bz2 /srv

Danach kann man etwas warten und das komplette /srv ist in /home/sicherung/srv.tar.bz2 drin gesichert.
Auspacken geht dann wieder mit:

tar -xvjf /home/sicherung/srv.tar.bz2

Diese Datei kann man dann auch über FTP an einen anderen Server senden.

Ein Komplettes Script, welches bei mir dafür im einsatz ist (incl versionsrotation) gebe ich hier auch gern:


#!/bin/sh
 
#=============================================================#
# Beschreibung: Backup-Script mit Versions-Rotation           #
# Author:       Sven Schmalle                                 #
# Datum:        24.01.2008                                    #
#=============================================================#
# Bitte eine backup_version.txt anlegen mir einer 0 drin als Inhalt.
#
# === Einstellungen: ===
 
# Verzeichnis mit den Dateien, die gesichert werden sollen
PFAD="/tatplatte/trac"
 
# Kleinste Version, die fuer ein Backup vergeben werden soll
MIN_VERSION="0" # 0+1=1 - erste Version ist die 1
# Groesste Version, die fuer ein Backup vergeben werden soll
MAX_VERSION="7"
 
# FTP-Server, der aus der .netrc des Users benutz werden soll
FTP_SERVER="213.23.XX.XX"
# FTP-Pfad, in welchem die Backup-Dateien gelegt werden sollen
FTP_PFAD="trac"
 
# der Pfad in dem das Script ausgeführt wird
cd /root/backups/trac/
 
#=============================================================#
#             !!!Ab hier bitte nichts Aendern!!!              #
#=============================================================#
 
version="`cat backup_version.txt`"
neuversion=$(($version + 1))
backupdatei=backup_${neuversion}.tar.bz2
 
echo $neuversion
 
echo $backupdatei einpacken...
tar -clj --exclude=proc -f $backupdatei $PFAD
 
#ls -la *.bz2
 
echo "ftp-verbindung aufbauen und hochladen"
ftp $FTP_SERVER <<EOF
passive
cd $FTP_PFAD
put $backupdatei
bye
EOF
 
echo "version hochsetzen"
if [ "$neuversion" = $MAX_VERSION ]; then
  echo $MIN_VERSION > backup_version.txt
else
  echo $neuversion > backup_version.txt
fi

Damit das mit dem FTP funktioniert (ohne Angabe von Benutzer und Passwort) muss in die /root/.netrc ein Eintrag für den FTP-Server bzw der IP des FTP-Servers stehen:


machine ftp-server.de
  login         benutzer
  password      passwort

MySQL Backups an Google Mail

Eine Nette Idee ist auch diese, seine Datenbank-Backups einfach an eine Mail anzuhängen und an seine Google Mail Adresse zu hängen.

Dies kann man z.B. auch auf normalen Webspace mit PHP machen:
[php]
<?

// ############ EINSTELLUNGEN ##################################
$Dateiname = date("d.m.Y").".bz2"; // Dateiname des Backups #
$user = 'webXX'; // Name #
$pass = 'xXxXx'; // Passwort #
$database = 'usr_webXX_1'; // zu sichernde Datenbank #
// #############################################################

// Backup erstellen
system("/usr/bin/mysqldump -u$user -p$pass -h localhost $database | bzip2 > $Dateiname", $fp);

// PHPMailer
require("class.phpmailer.php");
$mail = new PHPMailer();
//$mail->IsMail(); // send via mail()
$mail ->IsSMTP(); // per SMTP verschicken
$mail->Host = "mailserver.de"; // SMTP-Server
$mail->SMTPAuth = true; // SMTP mit Authentifizierung benutzen
$mail->Username = "webXXp1"; // SMTP-Benutzername
$mail->Password = "xXxXx"; // SMTP-Passwort

$mail->From = "backup@xxx-domain.de";
$mail->FromName = "MySQL Backup vom ".date("d.m.Y");
$mail->AddAddress("backup@googlemail.com");
$mail->WordWrap = 50; // set word wrap
$mail->AddAttachment($Dateiname);
$mail->IsHTML(true); // send as HTML

$mail->Subject = "MySQL Backup vom ".date("d.m.Y");
$mail->Body = "Diese Mail beinhaltet das MySQL Backup vom ".date("d.m.Y")." - ".date("H:i:s");
$mail->AltBody = "Diese Mail beinhaltet das MySQL Backup vom ".date("d.m.Y")." - ".date("H:i:s");
sleep(2);
if(!$mail->Send())
{
echo "<br><br><b><font color=&quot;#FF0000&quot; size=3>Message was not sent</font></b> <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
else
{
echo "Email an backup@googlemail.com gesendet.";
}
unlink($Dateiname);

?>
[/php]

Genauso gut gibt es auch ansätze Backups nicht per Mail an Google zu schicken, sonder in eine Quellcode-verwaltung wie SVN oder GIT zu packen, so hat man auch einen revisionierten stand aller änderungen zu den einzelnen Backups (dies funktioniert überigens auch unter Windows).

Meine neuste Idee ist verzeichnisse wie z.b. /etc/ mit Fossil (fossil-scm.org) zu sichern.
Fossil ist auch eine (dezentrale) Quellcode-verwaltung, kommt aber nur mit EINER Datei aus, läuft als CGI, benutzt SQLite als Datenbank für alle Dateien und legt vor allem keine ekeligen .svn unterordner oder sowas an.

Gut - das war mal ein grober Überblick.
Wenn Ihr Fragen dazu habt - immer gern fragen 😃