Gibt es ein Dienstprogramm (oder eine Shell-Magie), mit dem ich zwei Blockgeräte vergleichen kann?
Details: Ich habe ein großes RAID-Gerät (0,5 TB), das ich mit dd auf einem etwas größeren SATA-Gerät gesichert habe. Auf dem Gerät befinden sich mehrere Partitionen. Ich kopiere jedoch vom übergeordneten Gerät und nicht von den partitionierten Geräteknoten (z. B. kopiere ich / dev / hda und nicht / dev / hda1).
Ich möchte überprüfen, ob das Backup gut / korrekt ist.
Ich habe darüber nachgedacht, md5sum auf jedem Gerät auszuführen, aber das liefert mir kein genaues Ergebnis, da das zweite Gerät etwas größer als das erste ist und daher die zusätzlichen Bytes den Hash ändern.
quelle
info cmp
: "Der Befehl 'cmp' vergleicht zwei Dateien und teilt, falls sie sich unterscheiden, dem ersten Byte und der Zeilennummer mit, wo sie sich unterscheiden."--bytes=LIMIT
Option verwenden, indem Sie denLIMIT
Wert auf die Byte-Größe des kleineren Geräts einstellen, um am Ende des kleineren Laufwerks (oder der Partitionsgrenze) anzuhalten, ohne dencmp
Exit mit dem Status ungleich Null zu beenden .Je nachdem, wie voll die Laufwerke tatsächlich sind, kann es am schnellsten sein, die Dateisysteme bereitzustellen und dies zu tun
Ansonsten würde ich so etwas sagen:
Stellen Sie natürlich fest, wie groß Sie sein müssen,
bs
undcount
halten Sie am Ende des kleineren Laufwerks an (oder kurz davor, wenn es viel bequemer ist).Dank des Kommentars von enzotib können Sie es auch verwenden
cmp
, aber Sie benötigen das-n
Flag, um die Anzahl der Bytes auf das kürzere der beiden Laufwerke zu beschränken.quelle
diff
Subshells lesen nicht das gesamte Gerät, bevor sie es schreiben.dd
schreibtbs
Bytes unmittelbar nach dem Lesen (oder der Verarbeitung, falls angegeben, nicht hier), und sie schreiben infifo
s, die blockieren, bis sie gelesen werden.Sie suchen nach binärer Diff-Software
rdiff
wurde für Backup und Netzwerkübertragung entwickelt. Sehen Sie sich rdiff-backup und Duplizität für Backup-Vorschläge an
xdelta3
ist ein Open-Source- Binärdiff mit Differentialkomprimierungswerkzeugen und VCDIFF-Delta-Komprimierung (RFC 3284).
bsdiff
ist auch !! speicherhungrig, ist nicht für Blockgeräte geeignet.
quelle
Es gibt ein Dienstprogramm namens bsdiff , das genau so etwas macht. Es geht sehr schnell und kann bei Bedarf einen binären Patch generieren.
In diesem Beitrag finden Sie einige Erklärungen dazu.
quelle
bsdiff
Die Aufgabe ist komplexer als nur zwei Dateien zu vergleichen. Ich bezweifle, dass sie schneller als die einfachere sein kanncmp
.Sie können zwei unterschiedlich große Blockgeräte folgendermaßen vergleichen
md5sum
:(vorausgesetzt das kleinere Gerät ist
/dev/sda
)quelle
Ziehen Sie in Betracht,
fsck
das Backup auszuführen. Möglicherweise müssen Sie einige Streiche spielenlosetup
, um Loopback-Geräte auf Partitionen zu setzen, die in die Sicherung eingebettet sind. Wenn die Dateiprüfung jedoch besagt, dass die Dateistruktur konsistent ist, sind die Daten selbst wahrscheinlich gut.Wenn Sie eine vollständige Prüfsumme wünschen, können Sie Loopback-Geräte mit Offsets verwenden, um die internen 'Partitionen' der Sicherung und der MD5-Summe separat zu betrachten. Eine erzwungene
fsck
kann Ihnen jedoch eine Grundidee geben, die viel schneller ist als Byte für Byte-Vergleiche oder Prüfsummenberechnungen.quelle