Wie erstelle ich ein Backup eines vollständigen Centos-Servers?

24

Ich bin vor ein paar Wochen von einem dedizierten Server zu einem VPS gewechselt. Jetzt, da auf dem VPS alles gut funktioniert, möchte ich den dedizierten Server herunterfahren und meinen Account bei der Hosting-Firma schließen.

Zur Beruhigung und um sicherer zu sein, möchte ich eine vollständige Sicherung des Servers durchführen, bevor ich ihn stoppe.

Am besten wäre ein Backup, das ich durchsuchen könnte, wenn ich finde, dass ich etwas im Backup benötige.

Was wäre die beste Lösung von der Kommandozeile?

Update:

Medium: Netzwerk

benjisail
quelle

Antworten:

28

Das beste Tool dafür ist wahrscheinlich dump, ein Standard-Linux-Tool, mit dem Sie das gesamte Dateisystem erhalten. Ich würde so etwas machen:

/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish [email protected] dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz

Dies führt einen Dateisystem-Dump von / durch (stellen Sie sicher, dass Sie keine anderen Mounts sichern müssen!), Komprimieren Sie es mit gzip und ssh auf einen Remote-Server (backupserver.example.com) und speichern Sie es in / backup /. . Wenn Sie das Backup später durchsuchen müssen, verwenden Sie restore:

restore -i

Wenn Sie keinen Zugriff auf dump haben, können Sie auch tar verwenden und so etwas tun

tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .

Aber tar behandelt auch keine Änderungen im Dateisystem.

pehrs
quelle
dieser dump befehl kümmert sich auch um installierte programme oder? wie Nginx, etc ..
Thale
Dump ist eine wörtliche Kopie des Dateisystems, in der sich alles befindet. Solange Sie nicht mehr als eine haben (überprüfen Sie, indem Sie ausführen mount), ist das alles, was Sie brauchen.
Bill Weiss
Ich verstehe das-bash: /sbin/dump: No such file or directory
Lucas Bustamante
@LucasB Möglicherweise müssen Sie dump installieren. Auf Ubuntu machst du so etwas wiesudo apt-get install dump
pehrs
@pehrs wie stellst du die .gzdatei wieder her? Können Sie das bitte Ihrer Antwort hinzufügen? Es würde wirklich helfen.
Rote Flasche
10

Wenn Sie von Linux zu Linux sichern möchten, würde ich nicht dump verwenden, da es unpraktisch ist, wenn Sie auf etwas in der Sicherungsdatei zugreifen müssen. Nur rsyncüber SSH eine vollständige Systemsicherung durchzuführen, sollte in den meisten Fällen in Ordnung sein:

rsync -aAXv --delete-after --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / user@server:backup-folder

Auf diese Weise bleibt alles wichtige erhalten, und Sie können das Backup ohne zusätzliche Schritte durchsuchen.

Möglicherweise möchten Sie die --deleteOption rsync hinzufügen, wenn Sie diese Option mehrmals im selben Sicherungsordner ausführen. Stellen Sie in diesem Fall sicher, dass der Quellpfad nicht mit endet. Andernfalls wirkt sich /*diese Option nur auf die Dateien in den Unterverzeichnissen des Quellverzeichnisses aus, nicht jedoch auf die Dateien, die sich direkt im Quellverzeichnis befinden.

Rafael Bugajewski
quelle
3

Auf welchem ​​Medium werden Sie das Backup speichern? Wenn Sie über das Netzwerk sichern, würde ich mein Ziel mit sshfs / nfs auf dem Quellserver mounten und so etwas wie Folgendes ausführen:

tar cvjf /<remote_mnt>/<point>/source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/<remote_mnt>

Beachten Sie, dass nicht getestet wurde, nur meine allgemeine Meinung, dass Sie mehr oder weniger ausschließen möchten.

d34dh0r53
quelle
3

Ich benutze den oben beschriebenen Befehl von Pehrs, aber modifiziert für die Verwendung von FTP. Crontab-Probe:

30 3 1 * * sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 /<path_to_backup_file>/server-full-backup-root-`date '+%d-%B-%Y'`.dump
50 * * * * lftp -f upload.x

upload.x enthält FTP-Zugangsdaten und Regeln für den Upload:

open -u user,password -p 21 192.168.1.1
mirror -c -e -R /<path_to_backup_folder> /<path_to_remote_folder_without_trailing_slash>
exit

Hinweis 1: LFTP kann eine hohe CPU-Auslastung verursachen, wenn das Ziel nicht erreichbar ist und versucht, die Verbindung wiederherzustellen. Da in solchen Fällen möglicherweise viele Host-VPS zurückgesetzt werden, empfehle ich, die CPU-Auslastung zu überwachen, um den LFTP-Prozess abzubrechen und zu verhindern, dass der Server vom Host-Besitzer heruntergefahren wird. Ein Beispiel für einen Lastdurchschnitt> 1,33 für Prozesse lftp (und dropbox). Leider kann ich mich nicht an die Quelle des ursprünglichen Codes erinnern, danke an jemanden:

Crontab */5 * * * * /home/cms/cron/loadmon.sh

#!/bin/bash
FROM_EMAIL_ADDRESS=cms
  trigger=1.33
  load=`cat /proc/loadavg | awk '{print $1}'`
  response=`echo | awk -v T=$trigger -v L=$load 'BEGIN{if ( L > T){ print "greater"}}'`
if [[ $response = "greater" ]]
then
  killall dropbox lftp
  nice -n 19 sh /cms/.dropbox-dist/dropboxd
  sar -q | mailx -s "High load on server - [ $load ]" r***[email protected]
fi

Hinweis 2: Das Dienstprogramm dump funktioniert möglicherweise nicht auf OpenVZ VPS oder anderen virtuellen Servern.

Rapekaz
quelle
2

Hast du von Bacula gehört ?

Bacula ist eine Reihe von Open Source-Computerprogrammen für Unternehmen, mit denen Sie (oder der Systemadministrator) die Sicherung, Wiederherstellung und Überprüfung von Computerdaten über ein Netzwerk von Computern unterschiedlicher Art verwalten können. Bacula ist relativ benutzerfreundlich und effizient und bietet viele erweiterte Speicherverwaltungsfunktionen, die das Auffinden und Wiederherstellen verlorener oder beschädigter Dateien erleichtern. In technischer Hinsicht handelt es sich um ein netzwerkbasiertes Open Source-Backup-Programm für Unternehmen.

dani.jtk
quelle