A propos des lecteurs
La géométrie physique des disques durs modernes n'est plus directement accessible par le système d'exploitation. Les premiers disques durs étaient assez simples qu'il était possible de les adresser en fonction de leur structure physique, le secteur de la tête de cylindre. Les disques modernes sont beaucoup plus complexes et utilisent des systèmes comme zone bit recording, dans lesquels toutes les pistes n'ont pas le même nombre de secteurs. Il n'est plus pratique de les traiter selon leur géométrie physique.
de la page man fdisk:
Si possible, FDisk obtenir automatiquement la géométrie du disque. Ce n'est pas nécessairement la géométrie physique du disque (en effet, les disques modernes ne sont pas vraiment quoi que ce soit comme une géométrie physique, certainement pas quelque chose qui peut être décrit dans la forme simpliste Cylindres/Têtes/Secteurs)
Pour contourner ce problème les disques modernes problématiques sont adressés en utilisant Logical Block Addressing, qui est ce que le système d'exploitation connaît. LBA est un schéma d'adressage où le disque entier est représenté sous la forme d'un ensemble linéaire de blocs, chaque bloc étant une quantité uniforme d'octets (généralement 512 ou plus).
A propos des fichiers
Afin de comprendre où un « fichier » est situé sur un disque (au niveau LBA), vous aurez besoin de comprendre ce qu'est un fichier. Cela dépend du système de fichiers que vous utilisez. Dans les systèmes de fichiers de type Unix, il existe une structure appelée inode qui décrit un fichier. L'inode stocke tous les attributs d'un fichier et pointe vers l'emplacement LBA des données réelles.
Ubuntu Exemple
Voici un exemple de trouver l'emplacement des données de LBA fichier.
d'abord obtenir votre numéro d'inode de fichier
$ ls -i
659908 test.txt
Exécutez le débogueur de système de fichiers. "yourPartition" sera quelque chose comme sda1, c'est la partition sur laquelle se trouve votre système de fichiers.
$sudo debugfs /dev/yourPartition
debugfs: stat <659908>
Inode: 659908 Type: regular Mode: 0644 Flags: 0x80000
Generation: 3039230668 Version: 0x00000000:00000001
...
...
Size of extra inode fields: 28
EXTENTS:
(0): 266301
Le nombre sous « EXTENTS », 266301, est le bloc logique dans le système de fichiers que votre fichier se trouve. Si votre fichier est volumineux, plusieurs blocs seront listés. Il y a probablement un moyen plus facile d'obtenir ce nombre, je ne pouvais pas en trouver un.
Pour valider que nous avons le bon bloc, utilisez dd pour lire ce bloc du disque. Pour connaître la taille de votre bloc de système de fichiers, utilisez dumpe2fs.
dumpe2fs -h /dev/yourPartition | grep "Block size"
Ensuite, mettez votre taille de bloc dans le ibs = paramètre, et dans la mesure bloc logique dans la benne = paramètre, et exécuter dd comme ceci:
sudo dd if=/dev/yourPartition of=success.txt ibs=4096 count=1 skip=266301
success.txt doit maintenant contenir l'original le contenu du fichier.
Pourquoi la taille du bloc d'entrée (ibs) est-elle définie sur 4096? –
@VisheshHanda - la valeur 4096 est utilisée b/c c'est la taille d'un bloc sur l'appareil. – slm