
Mir ist bewusst, dass fallocate --keep-size
man damit eine Datei erweitern kann, ohne ihre logische Größe zu verändern. Gibt es eine Möglichkeit, das Gegenteil zu tun, also die logische Größe einer Datei zu verkleinern, ohne ihre Blöcke zu verändern?
Antwort1
Wenn Sie keine Blöcke entfernen, sondern die logische Dateigröße ändern möchten, möchten Sie vermutlich ein Loch am Ende der Datei löschen.
truncate / ftruncate kann dies, erkennt jedoch keine Lücken, sodass Sie die Lücke am Ende der Datei separat erkennen und dann ftruncate verwenden müssen, um die Datei zu verkleinern.
Bitte beachten Sie, dass ftruncate nur die halbe Lösung ist. Obwohl die meisten modernen Unix-Systeme das Erkennen von Lücken in Dateien unterstützen, gibt es hierfür keine portable Möglichkeit, da alle Systeme dies leicht unterschiedlich handhaben.
Stellen Sie außerdem sicher, dass Sie verstehen, was Fallocate macht. Es füllt Lücken und weist ihnen Datenblöcke zu. Wenn Sie Fallocate also auf einer Datei ausgeführt haben, wird ihre gesamte logische Größe durch physische Datenblöcke dargestellt, und Sie können ihre Größe nicht ändern, ohne einige dieser Datenblöcke freizugeben.