Warum überschreibt dd vorhandene Daten nicht?

Warum überschreibt dd vorhandene Daten nicht?

Wenn ich mit dem Tool dd beliebige Daten auf die Platte schreibe, kann ich wieder auf die alten Daten zugreifen. Um das zu testen, habe ich zunächst eine Datei "text.txt" auf die Platte geschrieben und "this is text" hineingeschrieben. Meine Platte ist im Verzeichnis /mnt/backup gemountet.

$ cat /mnt/backup/text.txt
this is text
$

Das habe ich verwendet dd:

$ dd if=/dev/urandom of=/dev/sdb1 #this is the disk mounted to the /mnt/backup directory
1025+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 14,4948 s, 74,1 MB/s
$

Wenn ich versuche, den Inhalt der Festplatte aufzulisten, erhalte ich keine Ergebnisse. Wenn ich jedoch den vollständigen Dateinamen eingebe, kann ich den Inhalt der Datei ausdrucken.

$ ls -l /mnt/backup/
total 0
$ cat /mnt/backup/text.txt
this is text

Warum passiert das? Ich hatte erwartet, dass die vorhandenen Daten ebenfalls überschrieben werden. Wenn ich den vollständigen Dateinamen kenne, kann ich trotzdem auf die Daten zugreifen. Was habe ich übersehen?

Antwort1

Die Daten werden wahrscheinlich überschrieben, einige davon sind jedoch noch im Speicher zwischengespeichert.

Wenn Sie auf diese Weise direkt auf das Gerät schreiben, umgeht es den Cache-Mechanismus des Linux-Dateisystems und geht direkt auf das Gerät. Was sich zu diesem Zeitpunkt im Cache befindet, ist zumindest vorübergehend nicht betroffen. Wenn das Dateisystem noch gemountet ist, schreibt das Betriebssystem möglicherweise sogar einige schmutzige Seiten auf die Festplatte zurück, nachdem Sie sie mit dd gelöscht haben.

Es kann jedoch sein, dass Linux irgendwann bemerkt, dass das Dateisystem beschädigt ist, und dies könnte einen Kernel-Panic auslösen.

Um optimale Ergebnisse zu erzielen, sollten Dateisysteme ausgehängt werden, bevor Sie direkt auf dem Gerät mit dem Kritzeln beginnen.

verwandte Informationen