GNU/Linux >> Linux Esercitazione >  >> Linux

Informazioni dettagliate sui file sparse su Linux

C'è una domanda simile su SO. La risposta attualmente accettata da @ephemient suggerisce di utilizzare un ioctl chiamato fiemap che è documentato in linux/Documentation/filesystems/fiemap.txt . Citando da quel file:

Il fiemap ioctl è un metodo efficiente per lo spazio utente per ottenere mappature fileextent. Invece della mappatura blocco per blocco (come bmap), fiemap restituisce un elenco di estensioni.

Sembra che questo sia il tipo di informazioni che stai cercando. Il supporto dei filesystem è di nuovo facoltativo:

I file system che desiderano supportare fiemap devono implementare un ->fiemap richiamare sul loro inode_operations struttura.

Supporto per il SEEK_DATA e SEEK_HOLE argomenti a lseek che hai citato da Solaris è stato aggiunto in Linux 3.1 secondo la pagina man, quindi potresti usarlo anche tu. L'fiemap ioctl sembra essere più vecchio, quindi potrebbe essere più portabile tra diverse versioni di Linux per ora, mentre lseek potrebbe essere più portabile tra i sistemi operativi se Solaris ha lo stesso.


Esiste una raccolta di programmi Python chiamati sparseutils che usano SEEK_HOLE e SEEK_DATA per determinare quali sezioni del file sono rappresentate come buchi e quali sono dati. L'utilizzo è abbastanza semplice. mksparse può essere utilizzato per generare un file sparse secondo un dato layout.

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

Il sparsemap programma può essere utilizzato per stampare il layout su stdout:

 $ sparsemap example
 HOLE 4096
 DATA 4096
 HOLE 4096

Linux
  1. Nozioni di base sui permessi dei file Linux

  2. Linux:tutto è un file?

  3. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  4. Come creare file sparsi in Linux usando il comando 'dd'

  5. Cosa sono i file sparsi in Linux

Comando Gzip in Linux

Comando Gunzip in Linux

Comando Stat in Linux

Cos'è umask in Linux?

Come collegare simbolicamente un file in Linux

Estrai il file tar.gz in Linux