Stellen Sie sich eine Datei vor, die erstellt wurde mit:
truncate -s1T file
echo test >> file
truncate -s2T file
Ich habe jetzt eine 2-Tebibyte-Datei (die 4 KB auf der Festplatte belegt), "test\n"
die in der Mitte geschrieben ist.
Wie würde ich das "test"
effizient wiederherstellen, ohne die gesamte Datei lesen zu müssen?
tr -d '\0' < file
Würde mir das Ergebnis geben, aber das würde Stunden dauern.
Was ich möchte, ist etwas, das nur die nicht spärlichen Teile der Datei ausgibt (also nur oben "test\n"
oder wahrscheinlicher den 4kiB-Block, der auf der Festplatte zugewiesen ist, auf der diese Daten gespeichert sind).
Es gibt APIs, um herauszufinden, welcher Teil der Datei zugeordnet ist (FIBMAP, FIEMAP, SEEK_HOLE, SEEK_DATA ...), aber welche Tools machen diese verfügbar?
Eine tragbare Lösung (zumindest für die Betriebssysteme, die diese APIs unterstützen) wäre wünschenswert.
tr
da es immer noch die gesamte Datei liest und mehr als nur die NUL-Bytes entfernt.
strings
?