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

Detaillierte Informationen zu Sparse-Dateien unter Linux

Es gibt eine ähnliche Frage zu SO. Die derzeit akzeptierte Antwort von @ephemient schlägt die Verwendung eines ioctl vor genannt fiemap was in linux/Documentation/filesystems/fiemap.txt dokumentiert ist . Zitat aus dieser Datei:

Das fiemap ioctl ist eine effiziente Methode für den Userspace, um Dateiumfangszuordnungen zu erhalten. Anstelle einer Block-für-Block-Zuordnung (wie bmap) gibt fiemap eine Liste von Extents zurück.

Klingt so, als ob dies die Art von Informationen ist, nach denen Sie suchen. Die Unterstützung durch Dateisysteme ist wiederum optional:

Dateisysteme, die Fiemap unterstützen möchten, müssen einen ->fiemap implementieren Rückruf auf ihrem inode_operations Struktur.

Unterstützung für SEEK_DATA und SEEK_HOLE Argumente für lseek Sie erwähnten von Solaris wurde laut Manpage in Linux 3.1 hinzugefügt, also könnten Sie das auch verwenden. Die fiemap ioctl scheint älter zu sein, daher ist es vorerst möglicherweise besser auf verschiedene Linux-Versionen übertragbar, während lseek könnte besser über Betriebssysteme hinweg portierbar sein, wenn Solaris dasselbe hat.


Es gibt eine Sammlung von Python-Programmen namens sparseutils, die SEEK_HOLE verwenden und SEEK_DATA um zu bestimmen, welche Abschnitte der Datei als Löcher dargestellt werden und welche Daten sind. Die Nutzung ist recht einfach. mksparse kann verwendet werden, um eine Sparse-Datei gemäß einem bestimmten Layout zu generieren.

 $ echo hole,data,hole | mksparse --hole-size 4096 --data-size 4096 example
 $ du -sh example
 4.0K   example

Die sparsemap Programm kann verwendet werden, um das Layout auf stdout zu drucken:

 $ sparsemap example
 HOLE 4096
 DATA 4096
 HOLE 4096

Linux
  1. Grundlagen der Linux-Dateiberechtigungen

  2. Linux – Alles ist eine Datei?

  3. Linux – Wie überprüft man die Verzeichnisstrukturinformationen einer Unix/Linux-Datei?

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

  5. Was sind Sparse-Dateien in Linux?

Gzip-Befehl unter Linux

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux

Was ist umask unter Linux?

So verknüpfen Sie eine Datei unter Linux per Symlink

Extrahieren Sie die tar.gz-Datei unter Linux