Wir möchten ein Backup von allem auf unserem Debian-Server erstellen, der remote auf der anderen Seite der Welt läuft (gehostet von Linode), ohne ihn herunterzufahren.
Auf diesem System werden Shell, E-Mail, XMPP / Prosody und Web mit ein paar einfachen Nginx-Setups ausgeführt.
Wir möchten Dateien im Zusammenhang mit diesen Dingen sichern, um die Sicherheit zu gewährleisten. Beispielsweise haben Benutzer Dateien in ihren Basisverzeichnissen gespeichert.
Das vorhandene Setup muss nicht für jede einzelne / etc-Datei exakt kopiert werden. Der Grund, warum wir überhaupt das Backup machen, ist, dass wir alles auf ein neues Setup verschieben können (neuere Version von Debian immer noch auf Linode).
Ich sehe, dass Linode einen Backup-Service anbietet. Langfristig brauchen wir aber auch eigene Backups, für den Fall, dass sie untergehen oder etwas anderes Merkwürdiges passiert.
Der Grund für diese Frage ist, dass ich, als ich in der Vergangenheit versucht habe, Backups zu erstellen, immer wieder einen der beiden folgenden Fehler gemacht habe:
- Ich habe "OK, ich kopiere nur
/
und alles darunter" und bin dann in einer seltsamen Endlosschleife hängengeblieben, weil das Laufwerk, auf das ich kopiert habe, unter / media / backup gemountet war und sich selbst rekursiv kopiert hat [obv Dieses spezifische Problem trifft hier nicht zu, da wir ein Backup über rsync oder ähnliches durchführen.] Oder es ist hängengeblieben, als würde versucht werden, "lebendige" Inhalte in / proc oder / var oder was auch immer zu kopieren. oder - Ich habe gesagt: "OK, ich nehme nur das Nötigste von dem, was wir brauchen ... hmm, alle Home-Verzeichnisse und unsere Webserver-Verzeichnisse (alle unter
/var
) und lass uns eine Kopie/etc
und alle alten Mails unter / var / suchen. vmail "und dann habe ich ausnahmslos Dateiberechtigungen oder Zeitstempel versaut (um sicherzugehen, dass ich diesmal keine Unix-Dateien auf ein FAT-Laufwerk kopiere) oder etwas vergessen habe (" oh, schieß, ich hatte einige benutzerdefinierte Skripte in / usr / local / bin, die ich nirgendwo anders gespeichert habe, ich habe vergessen, diese zu bekommen, schätze, sie sind jetzt weg ").
Das obv-Kopieren des gesamten Laufwerks hat also zu Fallstricken geführt, und das selektive Kopieren von Verzeichnissen hat zu Fallstricken geführt. Ich möchte wissen, wie ich es richtig mache.
Die Frage nach dem Serverfehler Was wird für ein vollständiges Backup-System benötigt? deckt Philosophie und gute Praktiken ab, aber ich suche nach diesen spezifischeren Details von:
- Welche Verzeichnisse muss ich kopieren und welche muss ich ausschließen (vorausgesetzt, es ist ein System, das gerade ausgeführt wird und ein Wiki, einen XMPP-Chat und E-Mails bereitstellt - mit neuen Nachrichten, die eingehen, während der Kopierauftrag ausgeführt wird)
- Welche Dateiattribute wie Zeitstempel & Eigentümer & Gruppe muss ich präsentieren und wie mache ich das? ← Ich denke, ich kann diese Hälfte der Frage selbst mit so etwas wie ... ähm ... beantworten.
rsync -HXaz
Ich denke, das ist eine gute Option für uns? Das-z
obv hat nicht wirklich mit der Frage zu tun, was ich bewahre
Ein Großteil der Sicherheitshinweise, die ich wie bei der Verwendung sehe, dd
scheint davon auszugehen, dass das Laufwerk nicht gemountet ist und nicht verwendet wird. Aber soll ich nicht ausschließen „lebenden“ Verzeichnisse wie / proc und einige der Unterverzeichnisse unter / var (aber einige der Sachen unter / var Ich weiß , wir auf jeden Fall tun müssen halten) und / montieren? Woran muss ich in dieser Situation noch denken? Dann kann ich es wohl einfach mit rsync und ein paar --exclude
Flags bearbeiten .
Oder gibt es bessere Ideen, besonders FOSS-freundliche?
cp -r -a
wird erhalten , wie viel Datei wie möglich Attribute beim Kopieren von Dateien (basierend auf , was das Zieldateisystem unterstützt). Das -a
Flag weist cp
an, Attribute beizubehalten. Das Kopieren über ein Netzwerk oder über ein Dateisystem, das die erforderlichen Attribute nicht unterstützt, tar -c
hat immer für mich funktioniert, obwohl ich glaube, dass es einige Randfälle gibt, die es nicht abdeckt, und insbesondere glaube ich, dass sie tar
standardmäßig von übereinstimmenden Benutzernamen abhängen beide Systeme. Trotzdem habe ich ein ganzes (nicht gemountetes) Linux-System tar
ohne offensichtliche Probleme kopiert .