Linux - Welche Verzeichnisse sollte ich beim Sichern eines Servers ausschließen?

37

Ich sichere einen Linux-Server und speichere ihn auf einem anderen Server.

Ich begann mit einem einfachen

rsync -aPh --del server.example.com:/ /mnt/backup

Dann hat jemand darauf hingewiesen, dass ich keine Sicherungskopien erstellen soll /proc, da Sie nicht möchten, dass /procein Server auf einem anderen wiederhergestellt wird .

Gibt es noch etwas, das ich hinzufügen / nicht hinzufügen sollte?

Was ist zum Beispiel damit /sys?

Rory
quelle

Antworten:

24

Dies hängt wirklich davon ab, wie Sie Ihr System wiederherstellen möchten. Wenn Sie neu erstellen, benötigen Sie nur die Konfigurations- / Datendateien für Ihre Dienste (z. B. / etc, / opt, / var, / home).

Wenn Sie nach einer vollständigen Systemwiederherstellung sind, können Sie / proc, / boot & / dev weglassen. Anschließend können Sie das Mindestbetriebssystem von Ihrem Startmedium installieren und anschließend Ihr System über Ihre Sicherung wiederherstellen.

Das beste Backup ist natürlich eines, das getestet und verifiziert wurde .

Lassen Sie also alles weg, was Sie nicht für nötig halten, und versuchen Sie, es auf einer VM wiederherzustellen. Stellen Sie dann sicher, dass Sie Ihr System mit diesen Daten wiederherstellen können.

Wayne
quelle
5
Lassen Sie es nicht /bootganz aus - möglicherweise müssen Sie die alte Startkonfiguration mit der neuen Startkonfiguration vergleichen. Stellen Sie nur sicher, dass die Wiederherstellung /boot nur manuell erfolgt.
Quacksalber 15.
5
Und auch / sys ausschließen ... Und um das Bare Metal wiederherzustellen, sollten Sie /etc/udev/rules.d/ ebenfalls ausschließen.
wazoox
2
auch verloren + gefunden, die für das Dateisystem, / mnt und / media keine gemounteten Geräte kopieren
Blade
29

Beide /procund /syssind virtuelle Dateisysteme, die den Status des Systems widerspiegeln und es Ihnen ermöglichen, mehrere Laufzeitparameter zu ändern (und manchmal gefährlichere Dinge zu tun, z. B. direkt in den Speicher oder auf ein Gerät zu schreiben). Sie sollten sie niemals sichern oder wiederherstellen.

In den meisten modernen Distributionen wird /deves dynamisch beim Booten erstellt (es ist ein von udevund Freunden gefülltes Speicher-Dateisystem ). Es hat keinen Sinn, eine Sicherungskopie davon anzulegen, und der Versuch, sie wiederherzustellen, ist vergeblich. Allerdings, wenn Ihre Verteilung konfiguriert ist , eine statische zu verwenden /dev, gilt dies nicht (Scheck /proc/mounts, wenn /devein ist tmpfses ist ein Speicher , Dateisystem).

Es gibt andere Dateisysteme, die Sie nicht sichern sollten. usbfs( in der Regel auf /proc/bus/usb, wenn überhaupt angebracht ist ), debugfs(angeblich an sein , /sys/kernel/debugwenn überhaupt angebracht ist , aber einige Leute setzen es woanders, man wahrscheinlich diese eine nicht haben), devpts(angebracht an /dev/pts), andere tmpfsInstanzen (oft gefunden /dev/shm, /var/run, /var/lockDas Sichern und Wiederherstellen von Dateien sollte harmlos, aber sinnlos sein, da deren Inhalt beim Herunterfahren verloren geht. Außerdem können entfernte Dateisysteme oder magische Automounter-Verzeichnisse (wenn Sie versuchen, sie zu sichern oder wiederherzustellen, kann dies zu einer Katastrophe führen) Sichern / Wiederherstellen auf einem anderen Computer ). Sie sollten auch vorsichtig mit /mediaund sein/mntB. externe Geräte (wie eine CD, die Sie im Laufwerk vergessen haben), gefunden werden, aber Sie haben sie möglicherweise auch absichtlich verwendet, um etwas bereitzustellen, das gesichert werden sollte.

Beachten Sie, dass, anders als meist harmlos tmpfsInstanzen, Netzwerk - Dateisysteme / Automountern und Wechselmedien, die Dateisysteme sollten Sie nicht wieder nach oben sind alle Abkömmlinge /dev, /procoder /sys. Wenn Sie keine Netzwerk - Dateisysteme (oder Automountern) haben, und keine Wechselmedien, ohne /sysund /procund einen Neustart nach einer Wiederherstellung (um die Wisch tmpfsInstanzen) sollte ausreichen.

CesarB
quelle
8

Einige der speziellen Dateien in / proc und / sys verwirren rsync. Normalerweise möchten Sie auch keine gemounteten Netzwerk-Dateisysteme sichern. Auch spärliche Dateien können Probleme verursachen.

Fügen Sie -x hinzu, um es auf ein Dateisystem zu beschränken. Dadurch werden alle Netzwerkdateisysteme und / proc usw. vermieden. In diesem Fall müssen Sie jedoch für jedes gemountete Dateisystem einen rsync ausführen.

Fügen Sie -S hinzu, um mit Dateien mit geringer Dichte sinnvoll umzugehen.

pjc50
quelle
4

/ boot, / dev und / proc sind für Backups völlig nutzlos. Wenn Sie jedoch wissen, was Sie tun, können Sie Backups / booten.

Ich würde auch nicht / lib, / media, / mnt, / sbin, / bin, / srv, / sys oder / tmp sichern.

/ usr ist optional, abhängig davon, ob sich in / usr Sicherungskopien befinden. Wenn ich Sie wäre, würde ich mich am meisten darum kümmern, die $ HOMEs, / var und / etc des Benutzers (für Konfigurationsdateien) zu sichern.

Auch dies hängt jedoch von der Art der Sicherung ab, die Sie durchführen möchten. Ist das ein Webserver? Ist das ein Personal Computer? Ist das ein Shell-Server mit Tonnen von Verzeichnissen unter / home?

Michael Pobega
quelle
Ich möchte das Backup mithilfe des Klonens auf einen neuen Computer wiederherstellen
Rory,
Was meinst du mit "Klonen"? Sie können die unformatierten Partitionen jederzeit mit dd und sfdisk sichern. Sfdisk -d> partition_table.part dd if = / dev / sda1 of = dev.sda1.img (für jede Partition ausführen), dann auf Ihrem neuen System: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img von = / dev / sda1 (wieder für jede Partition)
Michael Pobega
Da das Kommentarsystem keine Code-Tags mag, habe ich eine andere Antwort gepostet.
Michael Pobega
@MichaelPobega Wenn Sie wie gesagt Raw-Partitionen sichern, müssen Sie die gesamte Festplattengröße kopieren. Warum 512 GB kopieren, wenn Sie nur 80 GB Ihrer Festplatte verwendet haben? Damit rsynckopieren Sie nicht nur das, was Sie verwendet haben, sondern aktivieren auch die zukünftige Synchronisierung, sodass Sie einen Cron-Job sicher ausführen können.
Max
Als ich später auf diese Jahre zurückkam, hat mich meine jahrzehntelange Erfahrung gelehrt, dass Sie mit @Max richtig liegen.
Michael Pobega
3

Mit sfdisk und dd können Sie eine vollständige Sicherung durchführen.


Um das Partitionsschema jeder Festplatte zu sichern, verwenden Sie sfdisk wie folgt:

sfdisk -d /dev/sda  > parttable_sda.part

Zum Sichern jeder Partition können Sie dd wie folgt verwenden:

dd if=/dev/sda1 of=devsda1.img

Wo /dev/sda1ist nicht gemountet, wie bei einem Live-CD-Boot.

(Denken Sie daran, dass Sie viel freien Speicherplatz benötigen, um diese Datei zu schreiben. Vielleicht möchten Sie sie auf ein externes Medium schreiben.) Führen Sie dies für jede Partition einzeln aus und sichern Sie alles.


Dann können Sie auf einem anderen Computer wiederherstellen:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
Michael Pobega
quelle
3
WARNUNG: Tun Sie dies nur, wenn die Partition nicht gemountet oder schreibgeschützt gemountet ist. Das Sichern des unformatierten Inhalts einer Partition während des Schreibens kann zu einem stark inkonsistenten Dateisystem in der Sicherung führen (da Blöcke am Anfang des Dateisystems "früher" als Blöcke am Ende kopiert werden und die Dateisystemalgorithmen dies nicht tun) Sie können dieses Problem vermeiden, wenn Sie einen atomaren Schnappschuss des Dateisystems erstellen können. fsck wird Ihnen nicht helfen, da seine Algorithmen auch von der Reihenfolge abhängen, in der das Dateisystem auf die Festplatte schreibt.
CesarB,
dd ist der richtige Weg. Booten Sie natürlich von einer Live-CD. Und es ist wichtig, dd if=/dev/urandom of=/dev/sdb bs=512 count=12den MBR und die Partitionstabelle des Ziellaufwerks zu löschen.
SDsolar
2

Anstatt auszuschließen, sichere ich normalerweise nur das, was ich will. Einschließlich: /home /etc /var(außer /var/log)

DennyHalim.com
quelle
1

Grundsätzlich müssen Pseudodateisysteme (/ proc, / sys, / dev / shm ...) nicht gesichert werden.

sendmoreinfo
quelle
1

Wie diese großartige Community zeigt:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot ist optional, siehe andere Kommentare)

Als Referenz ist mein letzter rsync-Befehl (unter Arch mit externen Medien, die in '/ run / media / fred / INTENSO /' gemountet sind und in einem Ordner mit dem Namen 'fred' gesichert wurden):

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / fred / INTENSO / fred /.

(ausgeschlossene Dateien können auch mit geschweiften Klammern (--exclude = {/ dev, / proc}) unter Bash oder mit einer Textdatei (--exclude-from = 'excude.txt') angegeben werden.)

-P: Fortschritt anzeigen -a: Archivierungsmodus -z: Komprimieren während der Übertragung -h: Zahlen in einem lesbaren Format ausgeben -m: Leere Verzeichnisse entfernen -x: Beschränkung auf ein Dateisystem -v: Ausführlich

Fred Christophe
quelle
1

Ich bin auf einem Ubuntu 18.04-Rechner und habe diese ausgeschlossen:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Außerdem schließe ich speziell für mein Setup Folgendes aus:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk
user2724383
quelle
0

Im Allgemeinen gewöhne ich mir an, alles auf einem System zu sichern, auch das, was ich mit Sicherheit kenne, ist für die Sicherung unbrauchbar. Es ist einfacher einzurichten und Sie können zu 100% sicher sein, dass Sie alles, was Sie brauchen, in das Backup einbeziehen.

Maximus Minimus
quelle
1
ja, aber die nachfolgende Frage ist, was Sie als nicht benötigt aus Ihrem Backup entfernen?
Rory
Darauf würde ich antworten: "nichts".
Maximus Minimus
Wahr. Sie schließen es vom Wiederherstellungsprozess aus, nicht die Sicherung selbst. Aber du willst wahrscheinlich trotzdem auslassen /procund /devdamit die Armen nicht wenig verwirren rsync.
TJ Crowder
1
@mh, du würdest / proc / kcore wiederherstellen, was ist der Speicher des ursprünglichen Servers? das klingt ein bisschen albern ...
Rory
0

Ich verwende eine Ubuntu-Linux-Box als Testserver für die Website-Entwicklung und zum Hosten eines Dokumentations-Wikis. Jede Nacht speichert eine Crontab die MySQL-Datenbank in / var / www, und anschließend wird das gesamte Verzeichnis / var / www komprimiert und auf den Sicherungsserver repliziert. Es ist nicht ideal, aber es ist genug. Ich musste den Server irgendwann neu aufbauen, und alles, was ich wirklich vermisst habe, waren die Apache- und Samba-Konfigurationsdateien.

Nic
quelle
0

Ich nehme an, Sie haben kein Linux auf einer virtuellen Maschine. Wenn möglich, würde ich dringend über eine Umstellung auf Virtualisierung nachdenken. Backups auf VM-Ebene bieten ein völlig neues Maß an Konsistenz und Benutzerfreundlichkeit. Es gibt kostenlose Virtualisierungstools, sodass Sie nicht unbedingt in VmWare oder ein anderes teures Monster-Tool investieren müssen.

Gnudiff
quelle
0

Frage: Welche Verzeichnisse sollte ich beim Sichern eines Servers ausschließen?

Hier ist ein Skript, das ich häufig verwende, von einem Ubuntu 16.04 LTS-Laptop zu einem Ubuntu 16.04 LTS-Server. Es wird deutlich, welche Verzeichnisse bei einer vollständigen Sicherung übersprungen werden sollten:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Beachten Sie den Ausschluss von /mnt-, bei dem auf jedem Ubuntu-System rsyncviermal täglich ein Vollzeit-Sicherungslaufwerk für Cron-basierte Selbstsicherungen bereitgestellt wird. Diese Laufwerke werden durch Einträge in gemountet fstabund sind immer vorhanden. Sie in ein Backup auf einem anderen System aufzunehmen, wäre doppelt.

Ebenso werden /mediaUSB-Laufwerke gemountet. Sie werden separat gesichert.

SDsolar
quelle