
Ich verwende ein Nano Pi-Gerät mit Debian-Betriebssystem. Das Betriebssystem-Image befindet sich im internen Speicher (8 GB). Die Gesamtgröße des verwendeten Speichers beträgt etwa 4 GB. Ich möchte eine Sicherungskopie dieses Betriebssystems in einer Image-Datei erstellen.
Danach
dd if=/dev/mmcblk1 of=NanoPi.img bs=8M status=progress
Die Gesamtgröße der Bilddatei beträgt bis zu 8 GB. Wie kann ich das Bild nur aus dem vom Speicher verwendeten Speicher erstellen und nicht aus dem gesamten Speicher?
Antwort1
Dies ist nicht einfach möglich, dd
da ein Blockgerät nur ein Byte-Dump ist. Es kann Daten von längst gelöschten Dateien in nicht zugeordnetem Speicherplatz enthalten. dd
ist sich dessen nicht bewusst, da dies Aufgabe des Dateisystems ist. Sie haben einige Optionen:
Verwenden Sie weiterhin dd
... und akzeptieren Sie einen größeren Speicherplatzverbrauch. Machen Sie stattdessen etwas wie dd if=/dev/mmcblk1 of=NanoPi.img bs=64K conv=noerror,sync status=progress
. Eine kleinere Blockgröße gibt Ihnen etwas mehr Sicherheit bei Lesefehlern. Wenn dd
das Lesen von mindestens einem Sektor fehlschlägt, wird der Rest des Blocks nicht verarbeitet. Die Blockgröße ist die maximale Anzahl an Bytes, die Sie für einen fehlerhaften Sektor verlieren können. conv=noerror
stellt sicher, dass das Klonen im Fehlerfall fortgesetzt wird. conv=sync
verschiebt den Zeiger in der Zieldatei im Falle von Lesefehlern nach vorne, damit die Daten ausgerichtet und somit gültig bleiben.
Sie können dd
die Ausgabe weiterleiten, gzip
um die Daten zu komprimieren und Speicherplatz zu sparen:
dd if=/dev/mmcblk1 bs=64K conv=noerror,sync status=progress | gzip -c > NanoPi.img.gz
Um das Rohbild zurückzuerhalten, gehen Sie wie folgt vor gunzip -c ./NanoPi.img.gz > NanoPi.img
:
Verwenden Sie rsync
... und mit Rohdateien umgehen. rsync -aAXv /path/to/mounted/mmcblk1 /path/to/destination/folder
Dies kann für Sie funktionieren oder auch nicht, je nachdem, ob Ihr Dateisystem gemountet ist oder nicht.