• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

[GELÖST] Schickes Server SystemBackup oder: was stelle ich an mit RSYNC

DarkTrinity

Member
Hallo liebe Community :)

Ich beschäftige mich gertade ein bissel mit RSYNC, weil ich meinen Ubuntu Server absichern möchte.

Sichern möchte ich jedoch keine "Userdateien" (Dateien der Webhosts, Emails oder Datenbanken werden anderweitig schon gesichert), sondern wirklich nur das System. Ich erhoffe mir davon den Server im Falle eines extrem verpatzten Updates wieder herstellen zu können.

Das "Problem":
  • Die Menge an Dateien ist wirklich enorm groß
  • Der Vorgang dauert recht lange
Lösungsansätze:
  • Das Backup- Konzept
    • Setze ich auf mehrere differentielle Sicherungen (Stichwort --link-dest) oder lieber auf nur eine einzige (Stichwort -u --delete)
      • Die Differentiellen daueren wahrscheinlich ganz klar länger, bieten aber eine höhere Datensicherheit, denke ich
  • Mit oder ohne Dämon
    • Ich möchte RSYNC immer manuell, also vor einem Update, ausführen. Daher brauche ich eigentlich keinen Dämon. Mich würde aber interessieren, ob RSYNC als Service vielleicht wirklich deutliche Performancevorteile mit sich bringt - hat da jemand Erfahrungswerte ?
  • Die vom Backup ausgeschlossenen Daten
    • Bisher sind das bei mir:
      • --exclude=/backupshare --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude="/lost+found" --exclude=/mnt --exclude=/media --exclude=/home --exclude=/root --exclude=/var/vmail --exclude=/var/www
      • Das könnte man sicher noch ergänzen/optimieren (?)
  • Die Art wie die zu sichernden Daten geprüft werden
    • Ich könnte mir vorstellen daß --size-only einen Performancegewinn mit sich bringt
    • -w vielleicht auch
Zur Zeit teste ich das noch auf einem VirtualBox- Testgerät - hier ist das Zielverzeichnis eine VBOX Share. Auf dem Webserver sollen die Backups auf eine FTP Ressource fliessen, die ins Dateisystem gemountet ist (via curlftpfs)

So.....

Ich bin noch nicht sooooo furchtbar erfahren mit RSYNC. Eigentlich klappt das alles auch ganz gut, es gibt keine Probleme aber ich würde mich gerne ein bissel dazu austauschen. Wie geht Ihr bei sowas vor ? Ich würde mich über Meinungen und Anregungen total freuen :)
 
Imho besser als Rsync ist ein prinzipiell anderes Vorgehen, potentiell auf mehreren Ebenen:
- Host als Virtualisierungshost konfigurieren (z.B. VMWare ESXi, Proxmox, andere Bare Metal Virtualisierer)
- Anwendungen separat hosten, d.h. ggfalls eigene VMs pro Anwendung
- oder noch sinnvoller Anwendungen in einer VM oder einem Host, der beides kann, direkt containerisieren (Docker)

Mit VMs hast Du jederzeit die Möglichkeit Snapshots zu fahren, auch im laufenden Betrieb, und sehr leicht wieder zu einem funktionierenden Stand zurückzukehren. Davon abgesehen gibt es auch Backuplösungen, die Backups von VMs automatisiert machen, z.B. Synology Active Backup for Business von ESXi Host. Datenhaltung und Anwendungen sollte man zudem nicht in die gleiche VM mixen (sonst werden diese ewig groß), sondern über Shares / Mounts in die VM oder Container bewerkstelligen.

Einen Container brauchst Du gar nicht selbst updaten, sondern pullst schlicht die neue Version. Wenn die nicht tut, pullst Du halt eine ältere.
 
Das würde bei dem doch eher kleinen VServer wohl etwas über das Ziel hinaus gehen - ausserdem sollte es nach Möglichkeit nix kosten. RSync passt schon ^^

Für ein komplexeres System wäre Dein Vorschlag sicherlich angebracht.
 
Wenn Du keine Userdaten sichern musst - bleibt eigentlich nicht viel übrig, was man noch sichern sollte:
* Liste der installierten Pakete
* Konfig aus /etc

Das reicht eigentlich aus, um zusammen mit den Userdaten in einem neu installierten System alles wiederherzustellen.
 
Wenn man eh nur die Konfiguration und keine Nutzdaten sichern will, würde ich auf das Backup verzichten und auf Config-as-Code zurückgreifen.
Ansible, SaltStack, cfengine und co in Kombination mit Git machen da ein ziemlich guten Job. ;)
 
wobei das bei nur einem Server fast ein wenig oversized ist - da tut's ein einfaches Shell-Script auch...

(wobei ich nichts dagegen habe, das so zu machen :) )
 
Lieben Dank für Eure Kommentare :)

Die Variante von @marce hat mir ziemlich gut gefallen, da sie mit wenig Aufwand meinen Zweck eigentlich voll erfüllt.

Ich habe ein kleines Script gebastelt, es erstellt eine Liste der installierten Pakete mit Versionsangabe und zwar so, daß man diese gleich an apt-get übergeben kann (Paket=Version Paket2=Version etc). Zusätzlich das /etc Verzeichnis mit RSync - beides an eine eingebundene FTP Repo.
 
Ich habe ein kleines Script gebastelt, es erstellt eine Liste der installierten Pakete mit Versionsangabe und zwar so, daß man diese gleich an apt-get übergeben kann
Bei allen Config-as-a-Code Lösungen (aka Automatisierung), egal ob Ansible, Bash-Voodoo e.t.c. gibt es das gleiche zugrunde liegende Problem dass die Installation vermutlich in paar Monaten/Jahren nicht mehr sauber durchlaufen wird.

Bei sehr geringen Serverzahlen - Bauchgefühl <5 Server bei simplen/mittelschweren Konfigurationen - würde ich schlicht auf gute Dokumentation inkl. Befehle setzen. Dauert um Grössenordnungen weniger lang zur Erstinstallation, gleichzeitig dokumentierst du den Server ordentlich und kann auch bei neuen Paketversionen händisch leicht angepasst und funktional werden. Erfahrungsgemäß habe ich bereits Stunden am Debuggen von simplen Ansible-Skripten Dritter verbracht, wo eine Installationsanleitung nur Minuten gewesen wären.
 
Back
Top