Ist es sicher, das Laufwerk-Image des aktuellen Arbeitslaufwerks zu erstellen?


12

Ich muss meine Festplatte sichern. Ich möchte dddas Bild verwenden und auf eine externe Festplatte stellen.

  • Kann ich dies mit dddem Betriebssystem tun , das sich auf der Festplatte selbst befindet, oder muss ich von einem anderen Gerät booten, zum Beispiel einer LiveCD?
  • Ist es im Allgemeinen sicher, ein Image eines Geräts zu erstellen, wenn das Gerät aktiviert ist und funktioniert?
  • Was ist, wenn das Gerät gemountet ist, aber ich bin mir sicher, dass es während der ddAusführung keine andere E / A-Operation gibt?

Ich bin sicher, dass dies rsyncdas beste Tool für Sicherungen ist, insbesondere für inkrementelle Sicherungen.

Aber ich interessiere mich dafür dd, weil ich auch andere Speichergeräte sichern möchte und es auch Daten kopiert, die auf nicht partitioniertem Speicherplatz gespeichert sind. Beispielsweise verwendet mein E-Book-Reader einen nicht partitionierten Bereich zum Speichern von Uboot-, Kernel- und anderen Daten.


Es ist wichtig, welches Dateisystem Sie verwenden, welches interessiert Sie? Einige haben spezielle Funktionen für diese Aufgabe.
Vality

Antworten:


11

Im Allgemeinen ist es nicht sicher. Der FS geht davon aus, dass Operationen in einer bestimmten Reihenfolge geschrieben werden, damit er neue Daten der Datei schreiben und dann aus anderen Daten einen Zeiger darauf erstellen kann. Die genauen Details hängen vom Dateisystem ab. Stellen Sie sich vor, wenn Folgendes passiert:

  1. dd Liest von Position X, die Müll oder einige Daten enthält
  2. Dateisystem schreibt an Speicherort X
  3. Dateisystem schreibt an Position X + 1 Zeiger auf Position X
  4. dd Liest von Position X + 1 Link zu Position X

Aus der Sicht der Sicherung erhalten Sie einen Datenmüll. Es gibt jedoch mehrere Möglichkeiten, dies zu umgehen:

  • Einfrieren des Dateisystems durch einen dateisystemspezifischen Befehl (ich glaube, es xfs_freezeist einer und ich kenne keinen anderen - aber eine solche Option gibt es zumindest theoretisch)
  • Erstellen Sie einen lvm-Snapshot und kopieren Sie ihn. Die Kopie wird so aussehen, als ob Sie den Computer neu gestartet hätten (abzüglich der Neuordnung der Festplatte), sodass es sich um ein fehlerhaftes Dateisystem handelt, die Kopie jedoch atomar ist. Beachten Sie, dass einige Dateisysteme wie XFS zuerst eingefroren werden müssen.
  • Verwenden Sie rsync wie von anderen empfohlen. Jetzt ist die Kopie sicher und Sie brauchen kein LVM, aber die Kopie ist nicht atomar. Obwohl es das obige Problem auf Dateisystemebene vermeidet, kann es dennoch zu Problemen mit Dateien kommen (eher unwahrscheinlich, aber man kann sich vorstellen, dass Dateien fehlen, während mv zum Beispiel im Hintergrund ausgeführt wird).
  • Verwenden Sie das Dateisystem mit Snapshots wie btrfs , tux3 , zfs , nilfs ... Dann vermeiden Sie beide Probleme - Sie können einfach einen Snapshot erstellen und ihn mit rsync kopieren, der die volle Atomarität aufweist. Beachten Sie jedoch, dass ein solches Dateisystem häufig experimentell ist.

Als letzte Anmerkung - ddmöglicherweise nicht die beste Art der Sicherung. Es kopiert eine vollständige Festplatte, was oftmals unnötig ist, wenn Sie auch den 'Müll' kopieren. Wenn Sie ein Disk- Image benötigen, ist so etwas wie partimage möglicherweise besser. Wenn Sie keine bessere Option haben, verwenden Sie entweder rsync, tar im differentiellen / inkrementellen Modus usw. oder ein vollständiges Backup-System wie Bacula , Tarsnap oder eines von vielen anderen. Die Datendeduplizierung kann bei der Größe von Sicherungen Wunder bewirken.


1
+1 Dies ist die einzige Antwort, die tatsächlich versucht, diese Frage zu beantworten. Hervorragend getan, um tatsächlich zu lesen, was der Op verlangt, und nicht darüber zu schimpfen, wie schlecht dd ist.
Vality

+1 für eine gute Antwort. Aber ich bin nicht einverstanden mit dem Schimpfen. Dd ist nicht schlecht Dafür ist es einfach unangemessen und es ist eine gute Sache, zu erklären, warum dies der Fall ist.
Hennes

Punkt 4 hat die gleichen Einschränkungen wie Punkt 2, oder? Eine Anwendung befindet sich möglicherweise mitten in der Ausgabe von Schreibvorgängen, und der Snapshot kennt die Transaktion auf Anwendungsebene nicht.
Ben Voigt

Vielen Dank, es beantwortet die Frage. Die Antwort von goldilocks ist auch gut, aber ich bin daran interessiert, nicht nur meine Festplatte, sondern auch andere Speichergeräte zu sichern, und möglicherweise musste ich sie vorher schreiben.
Marco Sulla

@BenVoigt - bis zu einem gewissen Grad - eliminiert es eine Ebene (Dateisystem) und AFAIK ist die "zerbrechlichere". In einigen Fällen finden Sie immer noch halbgeschriebene Dateien, aber wenn die Anwendung diese nicht verarbeitet, können die Dateien auch unter vielen anderen Umständen (OOM, Absturz usw.) beschädigt werden. Daher sollte eine korrekt geschriebene Anwendung damit umgehen.
Maciej Piechotka

7

Dies hängt davon ab, wozu die Partition genau dient und wozu die Kopie dient. Ich werde jedoch sagen, dass es sich im Allgemeinen ddum ein ungeeignetes Tool zum Sichern von Dateisystemen handelt . Das ist auch nicht das, wofür es gedacht war.

  • Es wird viel Zeit verschwendet, leere Bereiche der Partition zu kopieren.

  • Dies kann zu Inkonsistenzen führen, wenn das Dateisystem gerade gemountet ist, auch weil es sich um eine Entität auf Betriebssystemebene handelt und möglicherweise nicht mit dem zugrunde liegenden Blockgerät synchronisiert ist. syncAnfänglich hilft ein Anruf nicht viel, da der Prozess nicht sofort abläuft.

Verwenden Sie stattdessen cp -aoder rsync. Sie müssen dann natürlich die Zielpartition erstellen, damit dies nicht ganz so einfach ist, aber es ist viel sicherer und flexibler. Wenn Sie ein Dateisystem- Image erstellen müssen , siehe unten.

Wenn Sie beabsichtigen, das Root-Dateisystem zu kopieren, verwenden Sie es auf keinen Fall dd. Sie müssen so etwas wie rsync -ax(oder cp -axfür einzelne Toplevel-Verzeichnisse) verwenden, da es eine Menge Dinge gibt, die NICHT in der Kopie enthalten sein dürfen . Unter Linux umfasst dies:

/dev
/lost+found
/mnt
/proc
/run
/sys
/tmp

Einige davon sind tatsächlich Kernel-Schnittstellen und keine echten Verzeichnisse auf der Festplatte. Wenn Sie sie kopieren, kopieren Sie eine Reihe von Informationen, die in der Kopie nicht zutreffen. Wenn Sie versuchen, ein System damit zu betreiben, wird nur Speicherplatz verschwendet, da die reale Schnittstelle oben montiert wird. Andere enthalten temporäre Informationen, die von laufenden Prozessen verwendet werden, und diese stellen ein größeres Problem dar, da das System den Müll nicht aussortieren kann, wenn Sie ihn kopieren.

Wenn Sie eine Image-Datei des Root-Dateisystems (oder eines beliebigen Dateisystems) erstellen möchten , erstellen Sie eine leere Image-Datei. Dies ist eine geeignete Verwendung für dd:

dd if=/dev/zero of=whatever.img bs=1024 count=1000000

Das ist ein Image mit 1024 MB (1000000 * 1024). Passen countSie an, ob Sie eine andere Größe wünschen. Erstellen Sie zB ein extDateisystem in der Datei :

mke2fs whatever.img

Es wird Sie warnen, dass dies kein echtes Blockgerät ist. Vorgehen. Hängen Sie nun die Image-Datei ein:

mount whatever.img /mnt/img

/mnt/imgmuss existieren aber könnte alles. Sie können jetzt rsync(oder cp -a) in /mnt/img. Der Inhalt bleibt whatever.imgbeim Abmelden erhalten.

Jedoch...

Verwenden Sie zur Verdeutlichung die eben beschriebene Dateisystem-Image-Methode nur, wenn Sie aus irgendeinem Grund unbedingt eine Image-Datei benötigen. Wenn Sie die Partition auf eine andere Festplatte kopieren möchten, benötigen Sie kein Image : Erstellen Sie eine neue Partition mit einem leeren Dateisystem auf diesem Laufwerk, hängen Sie sie ein und kopieren Sie sie dort hinein. Sie können den Inhalt des Dateisystems auch einfach in ein leeres Verzeichnis kopieren und archivieren:

tar -czf myarchive.tar.gz [the directory path]

Sie können diese dann in einer vorhandenen (leeren oder anderen) Partition bereitstellen, indem Sie sie in der obersten Ebene platzieren und Folgendes verwenden:

tar -xzf myarchive.tar.gz

Beachten Sie, dass vorhandene Dateien überschrieben werden, wenn ihre Pfade mit denen im Archiv übereinstimmen. Andernfalls bleibt die vorhandene Verzeichnishierarchie unverändert.


+1 in eine leere Bilddatei zu schreiben ist sehr einfach, aber welche Vorteile hat dies gegenüber dem Speichern in einem .tar- oder .tgz-Archiv?
Creek

@ Creek Es hat keine Vorteile, außer das Image ist einbindbar. Ich fügte hinzu, dass das Ziel des OP darin besteht, ein Bild zu erstellen, das roh verwendet werden kann. Andernfalls ist es besser, ein Archiv zu verwenden, da ein Archiv keine feste Größe hat. Ich werde eine klarere Einschränkung hinzufügen.
Goldlöckchen

Gotcha, das habe ich nicht gedacht. Immer noch eine coole Methode zum Speichern von Dateien.
Creek

2
@mpy Sowohl GNU coreutils cpals auch rsync haben die Option -x, eine Rekursion in andere Dateisysteme zu vermeiden. Maciejs Antwort erklärt am besten, warum dies ddhier absolut unangemessen ist (es wird fast garantiert, dass eine unbrauchbare Kopie erstellt wird, es sei denn, Sie treffen die von Mark aufgeführten Vorsichtsmaßnahmen , da sonst während der Kopie Schreibvorgänge stattfinden).
Gilles 'SO- hör auf böse zu sein'

2
ddkopiert keine Dinge, die keine echten Verzeichnisse sind, auf die Festplatte, daher bin ich mir nicht sicher, woher Ihr erster Punkt kommt. Geräte, die in /mnt, Knoten in /procusw. eingebunden sind, gehören nicht zu den dderfassten Daten, da sie sich nicht auf der Festplatte befinden. Für nicht gemountete Dateisysteme ddgilt vollkommen; Sie erhalten ein genaues Duplikat. Der einzige Grund, warum es für gemountete Dateisysteme ungeeignet ist, besteht darin, dass sich Daten auf dem System während der langen ddBetriebszeit teilweise ändern bzw. teilweise geschrieben werden können .
Jason C

1

rsync ist das Tool der Wahl zum Sichern eines Dateisystems und kann ein bootfähiges Backup des aktuell ausgeführten Betriebssystems erstellen.

Einige Einschränkungen:

  • Sie müssen die entsprechenden Optionen für die Alphabetsuppe hinzufügen
  • Pfade sind eher kritisch
  • Eine Ausschlussliste ist erforderlich und für jedes Betriebssystem und möglicherweise jede Konfiguration unterschiedlich

Einige Vorteile von rsync gegenüber anderen Methoden wie tar:

  • Sie können die Sicherung jederzeit stoppen und starten
  • Viele Optionen für den Umgang mit abgelösten Dateien wie Löschen bei Bedarf, Löschen vor, Verschieben .....
  • Wiederaufgenommene (oder wiederholte) Sicherungen sind viel schneller als andere Methoden, da zuvor kopierte Dateien übersprungen werden. (20x Geschwindigkeitserhöhung ist üblich)
  • Mit der Option --link-dest können versionierte Sicherungen erstellt werden, während nur neue Dateien kopiert werden

Imagesicherungen haben ihren Platz, aber sie kopieren das Laufwerk genauso wie es ist, einschließlich etwaiger Probleme. Eine Dateisicherung erstellt ein neues Verzeichnis und führt nebenbei zu einer Linearisierung (Defragmentierung) Ihres Laufwerks. Wenn Sie 10 identische Kopien Ihres aktuellen Betriebssystems erstellen möchten, würde ich rsync für den Kopiermaster und dann dd (oder ähnliches) für den Rest verwenden.


1

Es hängt davon ab, was Sie unter "aktuellem Betriebssystem" verstehen. Wenn Sie lediglich die Verwendung einer Startdiskette vermeiden möchten und sich nicht um die Unterbrechung von Diensten kümmern möchten, die auf dem Computer ausgeführt werden, ist Folgendes möglich:

  1. Beenden Sie alle nicht benötigten Programme (im Grunde genommen alles außer der Root-Shell, in der Sie arbeiten - versuchen Sie dies nicht von einem X-Terminal aus, sondern verwenden Sie eine echte Konsolen-Shell). Hier kann der Einzelbenutzermodus Abhilfe schaffen.
  2. Wenn Sie andere Datenträger als den Systemstamm bereitgestellt haben, heben Sie die Bereitstellung auf. Hängen Sie keine virtuellen Dateisysteme wie / proc, / sys oder / dev aus.
  3. Leeren Sie die zwischengespeicherten Daten auf der verbleibenden Festplatte: sync
  4. Remount das Root - Dateisystem schreibgeschützt: mount -o ro /.
  5. Hängen Sie Ihre externe Festplatte ein (Sie erhalten wahrscheinlich eine Warnung, dass Sie nicht darauf schreiben können /etc/mtab; ignorieren Sie sie).
  6. Machen Sie Ihr Backup.
  7. Hängen Sie Ihre externe Festplatte aus.
  8. Starten Sie neu. Sie haben Ihr System ziemlich durcheinander gebracht, und ein Neustart ist der schnellste Weg, um es wieder in den normalen Zustand zu versetzen.

Ich verwende diese Methode, um ein Archiv eines Computers zu erstellen, von dem ich gerade ein Upgrade durchgeführt habe, und erwarte nicht, dass er viel mehr verwendet. Es ist keine sehr gute Methode für ein System im aktiven Betrieb: Es ist langsam (dauert Stunden oder Tage), die Backups sind riesig (so dass Sie nicht mehr als ein paar behalten können) und es ist unglaublich störend, das gesicherte System zu verwenden oben. Für alltägliche Backups empfehle ich etwas, das auf Dateisystemebene funktioniert, z rsnapshot.


Beachten Sie, dass Schritt 4 auf einigen Dateisystemen gefährlich sein kann, da diese auch im schreibgeschützten Modus schreiben. Auch auf modernere Systeme (Linux 3.something ich glaube) Sie können einfach verlinken /etc/mtabauf /proc/self/mount- was auch funktioniert , wenn Sie solche Dinge wie chroots oder fs Namensräumen haben.
Maciej Piechotka

1
@MaciejPiechotka Mir ist kein Dateisystem bekannt, das im schreibgeschützten Modus schreibt, und ich würde es sehr seltsam finden. Einige Dateisysteme schreiben beim Mounten im Nur-Lese-Modus, wenn das Dateisystem zuvor nicht sauber gemountet wurde, sodass der Schritt mount -o remount,ro /möglicherweise schreiben kann. Aber wenn dieser Befehl zurückkommt, in welcher Situation würden nachfolgende Schreibvorgänge stattfinden?
Gilles 'SO- hör auf böse zu sein'

Die "nicht erforderlichen Programme", die heruntergefahren werden sollen, müssen das Protokollierungssubsystem enthalten, was ich nicht für erforderlich halte.
Gilles 'SO- hör auf böse zu sein'

@Gilles: Für die Erstellung eines Disk-Images der Boot-Disk ist jedes Programm, das nicht direkt an der Erstellung des Images beteiligt ist, nicht unbedingt erforderlich.
Mark

Hier könnte der Einzelbenutzermodus Abhilfe schaffen.
Vality

1

Nehmen Sie Clonezilla ernst. Es ist das beste Open-Source-Dienstprogramm auf Linux-Basis, das Norton Ghost ähnelt. Es wird sowohl das Klonen von Partitionen als auch von vollständigen Festplatten durchgeführt, entweder von Festplatte zu Festplatte oder von Festplatte zu Dateisystem (als Datei speichern). Es unterstützt die meisten Linux-Dateisysteme, NTFS, FAT32 und mehr. Es kann auf einer internen Festplatte, einem externen Laufwerk oder sogar über das Netzwerk auf SMB- oder NFS-Freigaben gespeichert werden.

Es ist sehr einfach zu bedienen und spart Ihnen viel Zeit.

Bearbeiten: Um die Frage zu beantworten, nein, Sie können die ddmeisten Dateisysteme nicht mounten, da die Gefahr besteht, dass Sie eine inkonsistente Kopie Ihres Dateisystems erhalten, da das Lesen von einem Blockgerät nicht atomar ist. Wenn Sie beispielsweise 100 Blöcke kopieren, hat das System möglicherweise den ersten und den letzten Block aktualisiert, als Sie sich noch in der Mitte befanden. Dies bedeutet, dass Ihre Kopie den geänderten letzten Block enthält, jedoch nicht den ersten.


+1: Es beantwortet die Frage nicht, aber es scheint ein guter Vorschlag für das Festplatten-Backup zu sein.
Marco Sulla
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.