GNU/Linux >> Znalost Linux >  >> Linux

Podrobné informace o řídkých souborech na Linuxu

Podobná otázka je na SO. Aktuálně přijímaná odpověď od @ephemien navrhuje použití ioctl s názvem fiemap což je zdokumentováno v linux/Documentation/filesystems/fiemap.txt . Cituji z tohoto souboru:

fiemap ioctl je efektivní metoda pro uživatelský prostor pro získání mapování rozsahu souborů. Místo mapování blok po bloku (jako je bmap) vrací fiemap seznam oblastí.

Zní to, že to je druh informací, které hledáte. Podpora souborovými systémy je opět volitelná:

Souborové systémy, které chtějí podporovat fiemap, musí implementovat ->fiemap zpětné volání na jejich inode_operations struktura.

Podpora pro SEEK_DATA a SEEK_HOLE argumenty na lseek zmiňovaný ze Solarisu byl přidán do Linuxu 3.1 podle manuálové stránky, takže to můžete také použít. fiemap ioctl Zdá se, že je starší, takže může být prozatím lépe přenosný v různých verzích Linuxu, zatímco lseek může být přenosnější mezi operačními systémy, pokud má Solaris totéž.


Existuje sbírka pythonových programů nazvaných sparseutils, které používají SEEK_HOLE a SEEK_DATA určit, které části souboru jsou reprezentovány jako díry a které jsou data. Použití je celkem přímočaré. mksparse lze použít ke generování řídkého souboru podle určitého rozvržení.

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

sparsemap program lze použít k tisku rozvržení na stdout:

 $ sparsemap example
 HOLE 4096
 DATA 4096
 HOLE 4096

Linux
  1. Linux – všechno je soubor?

  2. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?

  3. Jak vytvořit řídké soubory v Linuxu pomocí příkazu „dd“.

  1. Jak přesunout soubor v Linuxu

  2. Základy oprávnění k souborům Linux

  3. Co jsou řídké soubory v Linuxu

  1. Vysvětlení oprávnění souborů v systému Linux

  2. Linux Tail Command

  3. Linux Touch Command