GNU/Linux >> Tutoriels Linux >  >> Linux

Informations détaillées sur les fichiers fragmentés sous Linux

Il y a une question similaire sur SO. La réponse actuellement acceptée par @ephemient suggère d'utiliser un ioctl appelé fiemap qui est documenté dans linux/Documentation/filesystems/fiemap.txt . Citant ce fichier :

Le fiemap ioctl est une méthode efficace pour l'espace utilisateur pour obtenir des mappages d'étendue de fichier. Au lieu d'un mappage bloc par bloc (comme bmap),fiemap renvoie une liste d'étendues.

On dirait que c'est le genre d'informations que vous recherchez. La prise en charge par les systèmes de fichiers est à nouveau facultative :

Les systèmes de fichiers souhaitant prendre en charge fiemap doivent implémenter un ->fiemap rappel sur leur inode_operations structure.

Prise en charge du SEEK_DATA et SEEK_HOLE arguments de lseek vous avez mentionné que Solaris a été ajouté dans Linux 3.1 selon la page de manuel, vous pouvez donc également l'utiliser. Le fiemap ioctl semble être plus ancien, il pourrait donc être plus portable sur différentes versions de Linux pour le moment, alors que lseek pourrait être plus portable sur tous les systèmes d'exploitation si Solaris a le même.


Il existe une collection de programmes python appelés sparseutils qui utilisent SEEK_HOLE et SEEK_DATA pour déterminer quelles sections du fichier sont représentées comme des trous et lesquelles sont des données. L'utilisation est assez simple. mksparse peut être utilisé pour générer un fichier fragmenté selon une mise en page donnée.

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

Le sparsemap programme peut être utilisé pour imprimer la mise en page sur stdout :

 $ sparsemap example
 HOLE 4096
 DATA 4096
 HOLE 4096

Linux
  1. Bases des autorisations de fichiers Linux

  2. Linux - Tout est un fichier ?

  3. Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

  4. Comment créer des fichiers fragmentés sous Linux à l'aide de la commande "dd"

  5. Que sont les fichiers fragmentés sous Linux

Commande Gzip sous Linux

Commande Gunzip sous Linux

Commande Stat sous Linux

Qu'est-ce qu'umask sous Linux ?

Comment créer un lien symbolique vers un fichier sous Linux

Extraire le fichier tar.gz sous Linux