Einträge Ich kann Backups sicher ausschließen

10

Ich plane eine Backup-Strategie basierend auf rsnapshot .

Ich möchte eine vollständige Systemsicherung ohne Dateien und Verzeichnisse durchführen, die für die Wiederherstellung unbrauchbar wären, um wieder ein funktionierendes System zu haben. Ich habe bereits ausgeschlossen:

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

Ich frage mich, welche anderen Einträge ich zur Ausschlussliste hinzufügen kann, ohne das wiederhergestellte System zu gefährden. Wenn Sie von einem "generischen" Linux-System sprechen, können Sie weitere Glob-Erweiterungen, temporäre Verzeichnisse, Caches usw. vorschlagen, die ich sicher ausschließen kann?

Paolo
quelle

Antworten:

11

Zunächst sollten Sie sich ein wenig über die Include / Exclude-Syntax von rsync informieren. Ich habe das Gefühl, dass das, was Sie tun möchten, besser mit **Globs als mit *Globs gemacht werden kann. ( **Erweitert sich auf eine beliebige Anzahl von Einträgen, während *sich nur auf einen einzelnen Eintrag erweitert, der möglicherweise mit mehreren Verzeichniseinträgen übereinstimmt . Die Details finden Sie man rsyncunter Einschließen / Ausschließen von Musterregeln .)

Wenn Sie jedoch in der Lage sein möchten, das System mit einem Minimum an Aufwand aus der Sicherung in einen bekannten Betriebszustand zurückzusetzen, sollten Sie vorsichtig sein, wenn Sie Dateien oder Verzeichnisse ausschließen. Ich benutze rsnapshot selbst und habe tatsächlich den umgekehrten Ansatz gewählt: alles einschließen, außer ein paar sorgfältig ausgewählten Verzeichnissen.

In meiner rsnapshot.conf heißt es also tatsächlich (mit Registerkarten, die den Parser der Konfigurationsdatei von rsnapshot glücklich machen):

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

und sonst sehr wenig. Ja, es bedeutet, dass ich möglicherweise etwas mehr kopiere, als unbedingt erforderlich ist, aber es stellt sicher, dass alles kopiert wird, was nicht als ephermal gedacht ist. Aufgrund von rsnapshot, das das Hardlink-to-Deduplicate-Verhalten von rsync verwendet, sind die einzigen tatsächlichen Kosten hierfür beim ersten Durchlauf. Vorausgesetzt, Sie haben einen Sicherungszielspeicherort mit angemessener Größe (im Vergleich zu Ihrer Gesamtdatensatzgröße), wird danach weder Zeit noch Speicherplatz benötigt. Ich schließe den Inhalt von / backup aus, da ich dort das Backup-Zieldateisystem einbinde. Wenn Sie dies nicht ausschließen, wird das Backup in sich selbst kopiert. Der Einfachheit halber möchte ich jedoch den Montagepunkt beibehalten, wenn ich jemals auf blankem Metall wiederherstellen muss!

In meinem Fall kann ich auch nicht vernünftig verwenden one_fs 1; Ich führe ZFS mit derzeit ~ 40 Dateisystemen aus. Das explizite Auflisten all dieser Elemente wäre ein Alptraum für die Wartung und würde die Arbeit mit ZFS-Dateisystemen viel komplizierter machen, als es sein muss.

So ziemlich alles, was Sie darüber hinaus ausschließen möchten, hängt sowieso von der Verteilung ab, sodass es praktisch unmöglich ist, eine generische Antwort zu geben. Das heißt, Sie werden wahrscheinlich einige Kandidaten unter / var finden.

ein CVn
quelle
1
exclude /somepath/*ist in diesem Fall vollkommen in Ordnung; es schließt alles aus /somepath/, genau wie erwartet. Sie brauchen nicht, **weil Sie nicht tiefer schauen müssen, wenn bereits alles /somepath/ausgeschlossen ist.
Martin von Wittich
Oder verwenden exclude /somepathund ignorieren Sie diese Verzeichnisse einfach ganz - nicht nur deren Inhalt.
Frank Kusters
4
@spaceknarf Das bricht die Montage ab, wenn Sie auf Bare Metal wiederherstellen, da dann der Mount-Punkt nicht vorhanden ist.
Ein
4

Das meiste, was Sie versuchen, kann wahrscheinlich einfach mithilfe der one_fsEinstellung erreicht werden. Legen Sie die Dateisysteme die Sie in Ihren Backups enthalten sein sollen, dann diese Einstellung verwenden , um den Rest zu ignorieren ( proc, sys, dev, etc.). Ich würde einschließen, /lost+foundweil dieses Verzeichnis immer leer sein sollte, es sei denn, Sie haben ein beschädigtes Dateisystem gesichert. In diesem Fall möchten Sie wahrscheinlich eine Sicherungskopie von allem, was fsckwiederhergestellt wurde. Außerdem .pycund .pyosollte eigentlich gar nicht im Stammverzeichnis sein, also würde ich diese Zeilen auch entfernen. /tmpund /var/tmpsind ungefähr die einzigen verbleibenden Pfade auf einem "generischen" System, die Daten enthalten, die zuverlässig von Sicherungen ausgeschlossen werden können. Also versuchen Sie vielleicht etwas wie:

one_fs 1

exclude /tmp/
exclude /var/tmp/
depquid
quelle
Ich meinte nicht wirklich /*.pycund /*.pycaber systemweit *.pycund *.pyo, das habe ich behoben. Ich bin mir jedoch nicht sicher, ob die one_fsEinstellung 1alles ausschließen soll, was ich möchte.
Paolo
1
Was ist, wenn ein Systempaket solche Dateien verwendet?
depquid
Sie haben Recht, aber ich bin mir fast sicher, dass jede Datei .py früher oder später automatisch neu kompiliert wird.
Paolo
3
Vielleicht, aber auf meinem System werden solche Dateien von Herstellerpaketen installiert. Das heißt, wenn das System aus der Sicherung wiederhergestellt wird, fehlen Dateien, von denen der Paketmanager glaubt, dass sie vorhanden sind. Sie haben nach einer Lösung für ein "generisches" Linux-System gefragt, und ich glaube nicht, dass man davon ausgehen kann, dass solche Dateien ohne Probleme verloren gehen können.
depquid
Eine erwähnenswerte Sache, die ich im Q vergessen habe, ist, dass Bindungs-Mounts ebenfalls ausgeschlossen werden sollten, um Datenverdopplungen zu vermeiden.
Paolo
1

Ich finde es besser, eine Paketliste, den Inhalt von / etc, / home und alle Benutzer- / Systemdaten von / var und anderswo zu haben. Es ist normalerweise schneller, die Pakete neu zu installieren und die Arbeitskonfiguration zurück zu kopieren.

Sean Perry
quelle
Warum sollte die Installation von Paketen, einschließlich des Schreibens aller Systemdateien sowie der Verarbeitung von Konfigurations- und Metadaten, schneller sein als das einfache Kopieren von Dateien?
depquid
Ich habe die Erfahrung gemacht, dass Sie, wenn ein echtes Backup benötigt wird, auch feststellen, dass Sie nicht alle Teile eines Systems ordnungsgemäß gespeichert und dokumentiert haben. Wenn Sie sich stattdessen eher auf Erholung als auf Wiederherstellung konzentrieren, wird dies einfacher, schneller und häufiger. Offensichtlich YMMV.
Sean Perry