GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So berechnen Sie die CRC-Prüfsumme in Linux mit dem Cksum-Befehl

Die Prüfsumme wird zur Überprüfung der Integrität der Daten verwendet. Angenommen, eine Datei wird über ein Netzwerk oder über ein System kopiert und aufgrund eines Ereignisses wie einer Unterbrechung der Netzwerkverbindung oder eines plötzlichen Neustarts des Computers wurden die Daten nicht vollständig kopiert.

Wie würden Sie nun die Integrität der Daten überprüfen? Nun, durch den CRC-Prüfsummenmechanismus kann die Datenintegrität überprüft werden. Es gibt verschiedene Mechanismen, durch die eine CRC-Prüfsumme berechnet werden kann. Zum Beispiel haben wir in einem unserer Artikel (IP-Header-Prüfsumme) besprochen, wie man die Prüfsumme eines IP-Headers findet. In diesem Artikel konzentrieren wir uns auf den Linux-Befehl „cksum“, der verwendet wird, um die Prüfsumme von Dateien oder die auf der Standardeingabe bereitgestellten Daten zu berechnen.

Was ist CRC?

CRC steht für zyklische Redundanzprüfung.

Die Prüfsumme kann berechnet werden, indem der CRC-Mechanismus (Cyclic Redundancy Check) auf die übertragenen Daten angewendet wird. Jeder Datenblock, der den Kommunikationskanal durchläuft, wird mit einem CRC-Code oder einer Prüfsumme versehen, und wenn der Datenblock das Ziel erreicht, wird diese Prüfung erneut angewendet, um einen Prüfsummenwert zu erzeugen. Wenn die am Ziel generierte Prüfsumme und der Prüfsummenwert im Datenblock gleich sind, wird davon ausgegangen, dass die Daten nicht beschädigt sind und weiter verwendet werden können, aber wenn die beiden Prüfsummenwerte nicht gleich sind, werden die Daten in diesem Fall als beschädigt bezeichnet oder infiziert.

Der Name CRC ist weil:

  • Dieser Mechanismus basiert auf den Grundlagen zyklischer Codes (daher cyclic ).
  • Der an die Daten als Prüfsumme angehängte Code ist redundant, dh er fügt den übertragenen Daten keinen Wert hinzu (daher Redundanz ).
  • Es ist eine Prüfung (daher Prüfung )

Der cksum-Befehl

Der Befehl cksum wird zum Berechnen der zyklischen Redundanzprüfung (CRC) für jede ihm als Argument bereitgestellte Datei verwendet. CRC wird in Situationen wichtig, in denen die Datenintegrität überprüft werden muss. Mit dem cksum-Befehl kann man die Prüfsumme der Zieldatei mit der der Quelldatei vergleichen, um festzustellen, ob die Datenübertragung erfolgreich war oder nicht.

Neben der Bereitstellung des CRC-Werts erzeugt dieser Befehl auch die Dateigröße und den Dateinamen in der Ausgabe. Der Befehl wird im Erfolgsfall mit dem Status Null beendet und jeder andere Statuswert zeigt einen Fehler an.

Detaillierte Informationen zu diesem Befehl erhalten Sie, indem Sie Folgendes an der Eingabeaufforderung eingeben:

$ info coreutils 'cksum invocation'

Beispiele für cksum-Befehle

1. Ein einfaches Beispiel

Auf einer sehr einfachen Ebene kann der Befehl cksum verwendet werden, um die Prüfsumme für eine Datei anzuzeigen.

$ cksum testfile.txt
3000792507 3 testfile.txt

Der erste Wert (große Zahl) in der obigen Ausgabe ist die Prüfsumme für die Datei, dann haben wir die Größe der Datei und schließlich den Namen der Datei.

2. Prüfsumme ändert sich bei Inhaltsänderung

Die Testdatei ‚testfile.txt‘ hat folgenden Inhalt:

$ cat testfile.txt
Hi

Um die Prüfsumme der Testdatei zu berechnen, übergeben Sie sie als Argument an den Befehl cksum :

$ cksum testfile.txt
3000792507 3 testfile.txt

Ändern Sie nun den Inhalt der Datei:

$ cat testfile.txt
Hi everybody.

Übergeben Sie die Testdatei erneut als Argument an den Befehl cksum :

$ cksum testfile.txt
2559130041 14 testfile.txt

Wir sehen also, dass sich bei einer Änderung des Inhalts die Prüfsumme ändert.

3. Eine Änderung des Inhalts bedeutet nicht immer eine Vergrößerung oder Verkleinerung

Nun, das Obige gilt grundsätzlich auch und sogar für chksum. Mal sehen, was es bedeutet:

Prüfen Sie den Inhalt der Testdatei „testfile.txt“ :

$ cat testfile.txt
Hi everybody

Beachten Sie die Prüfsumme :

$ cksum testfile.txt
2559130041 14 testfile.txt

Ändern Sie nun den Inhalt, indem Sie nicht wirklich etwas hinzufügen oder löschen, sondern ein Zeichen durch ein anderes ersetzen, sodass die Größe der Datei gleich bleibt.

$ cat testfile.txt
Hi everybudy.

Wie Sie sehen können, habe ich „o“ durch „u“ ersetzt.

Vergleichen Sie jetzt die Prüfsumme:

$ cksum testfile.txt
3252191934 14 testfile.txt

Wir sehen also, dass sich die Prüfsumme geändert hat, selbst wenn die Änderung darin bestand, dass ein Zeichen durch ein anderes ersetzt wurde.

4. Eine unterbrochene Kopie

Angenommen, Sie kopieren einen gezippten Ordner mit verschiedenen Unterordnern und Dateien von einem Ort zum anderen und der Kopiervorgang wurde aus irgendeinem Grund unterbrochen. Wie würden Sie also überprüfen, ob alles erfolgreich kopiert wurde oder nicht? Nun, cksum macht es möglich, da wir jetzt wissen, dass im Falle der Teilkopie die Gesamtprüfsumme des Zielordners von der des Quellordners abweichen würde.

Sie können dieses Szenario folgendermaßen simulieren:

Ich habe Linux.tar.gz und Linux_1.tar.gz aus demselben „Linux“-Ordner erstellt. Der Unterschied besteht darin, dass Linux_1.tar.gz erstellt wurde, als der Ordner „Linux“ eine zusätzliche Textdatei enthielt.

Das obige Szenario simuliert also, als Linux_1.tar.gz kopiert wurde, aber unterbrochen wurde, als nur noch eine Textdatei in das Ziel Linux.tar.gz kopiert werden musste

Wenn ich jetzt die Prüfsumme dieser beiden Dateien vergleiche, sehe ich

$ cksum Linux.tar.gz
756656601 1037079 Linux.tar.gz

$ cksum Linux_1.tar.gz
2598429125 1037184 Linux_1.tar.gz

Die obige Ausgabe zeigt also unterschiedliche Prüfsummenwerte, die auf eine falsche Kopie der Datei hindeuten.

5. Prüfsumme der Standardausgabe

Dieser Befehl bietet eine Funktion, bei der der Benutzer einfach „cksum“ oder „cksum-“ eingeben und auf stdin schreiben und dann mehrmals Strg+D drücken kann. Auf diese Weise gibt cksum die Prüfsumme der am Eingang eingegebenen Daten an.

$ cksum
Lets check the checksum1135634677 23

Im obigen Beispiel haben wir tatsächlich die Prüfsumme der Zeichenfolge „Lets check the checksum“ berechnet.


Linux
  1. So speichern Sie die Befehlsausgabe in einer Datei unter Linux

  2. So extrahieren Sie die tar.gz-Datei in Linux mithilfe der Befehlszeile

  3. So starten Sie Linux über die Befehlszeile neu

  4. Wie beendet man einen Prozess unter Linux mit dem Befehl?

  5. So erstellen Sie Sparse-Dateien in Linux mit dem Befehl „dd“.

So erstellen Sie eine Datei in Linux mit Terminal

So sperren Sie eine Textdatei in Linux mit dem Befehl flock

So mischen Sie Zeilen in einer Datei unter Linux

So überprüfen Sie die SHA256-Prüfsumme der Datei in Linux

So verwenden Sie den Befehl lsof unter Linux

So verwenden Sie den Linux-Befehl shred