{"id":558,"date":"2019-12-03T21:41:20","date_gmt":"2019-12-03T19:41:20","guid":{"rendered":"https:\/\/orditux.org\/floss\/?p=558"},"modified":"2026-02-11T03:04:45","modified_gmt":"2026-02-11T01:04:45","slug":"recuperer-vos-donnees-avec-whdd","status":"publish","type":"post","link":"https:\/\/orditux.org\/floss\/2019\/12\/03\/recuperer-vos-donnees-avec-whdd\/","title":{"rendered":"R\u00e9cup\u00e9rer vos donn\u00e9es avec WHDD"},"content":{"rendered":"<p style=\"text-align: justify;\">WHDD est un logiciel libre, \u00e9crit par Andrey UTKIN. Clone d&#8217;un freeware nomm\u00e9 MHDD, il permet de r\u00e9aliser diverses op\u00e9rations sur un disque dur, incluant la r\u00e9cup\u00e9ration de donn\u00e9es sur un disque dur endommag\u00e9, dans certaines limites.<\/p>\n<p style=\"text-align: justify;\">Son avantage est d&#8217;abord qu&#8217;il est \u00e9crit <strong>dans un langage bas niveau<\/strong>, (il s&#8217;adresse aux couches logicielles les plus proches du mat\u00e9riel), et ensuite qu&#8217;il utilise une strat\u00e9gie de recherche de donn\u00e9es \u00e9labor\u00e9e pour <strong>\u00e9viter le plus possible d&#8217;amener le disque dur test\u00e9 \u00e0 chauffer<\/strong>.<\/p>\n<p style=\"text-align: justify;\">On le trouve pr\u00eat \u00e0 l&#8217;emploi dans System Rescue CD, ou sous forme de sources sur github: <a href=\"https:\/\/github.com\/whdd\/whdd\">https:\/\/github.com\/whdd\/whdd<\/a><\/p>\n<p style=\"text-align: justify;\">Vous y trouverez l&#8217;information sur la mani\u00e8re de le compiler. Il n\u00e9cessite en pr\u00e9requis le programme dialog, qui bien qu&#8217;il ne soit plus d\u00e9velopp\u00e9 est encore pr\u00e9sent dans les d\u00e9p\u00f4ts des distributions GNU\/Linux les plus employ\u00e9es (pour ce que j&#8217;en sais).<\/p>\n<h2 style=\"text-align: justify;\">Comment l&#8217;utiliser<\/h2>\n<h3 style=\"text-align: justify;\">WHDD<\/h3>\n<p>D&#8217;abord, installer et lancer WHDD, soit depuis une distribution qui le fournit, comme SystemRescueCD, soit en le cherchant dans le d\u00e9p\u00f4t de votre distribution, ou <a href=\"https:\/\/whdd.github.io\/get_it\/\" target=\"_blank\" rel=\"noopener\">en le compilant depuis les sources<\/a>.<\/p>\n<p>Ensuite, regardez cette vid\u00e9o.<br \/>\n<a href=\"https:\/\/orditux.org\/Downloads\/whdd.webm\">https:\/\/orditux.org\/Downloads\/whdd.webm<\/a><br \/>\n(elle est un peu trop rapide).<br \/>\nPlus de d\u00e9mos ici : <a href=\"https:\/\/whdd.github.io\/demo\/\" target=\"_blank\" rel=\"noopener\">https:\/\/whdd.github.io\/demo\/<\/a><\/p>\n<p>Pensez \u00e0 l&#8217;espace requis : il est n\u00e9cessaire d&#8217;avoir un disque destination\u00a0 ou une partition destination <strong>de volume \u00e9gal ou sup\u00e9rieur au disque source entier<\/strong>. La raison en est que le clone ne peut pas \u00eatre compress\u00e9 par l&#8217;outil WHDD lors de la recherche des secteurs \u00e0 sauvegarder. Donc, c&#8217;est tout, ou rien.<\/p>\n<p>Il vous faudra aussi \u00eatre patient, la cr\u00e9ation de l&#8217;image peut prendre plusieurs heures. Il m&#8217;est arriv\u00e9 de lancer une op\u00e9ration de sauvetage en fin de journ\u00e9e un \u00e9t\u00e9, et d&#8217;installer un ventilateur en face du disque dur \u00e0 sauver, pendu au bout du c\u00e2ble SATA avant de quitter le local, (pour ne pas enfermer le disque dur avec les donn\u00e9es \u00e0 sauver, et pour pr\u00e9venir une chauffe trop importante du disque). J&#8217;ai pu r\u00e9cup\u00e9rer l&#8217;image du disque ainsi trait\u00e9, le lendemain matin.<\/p>\n<h3>Traiter l&#8217;image obtenue<\/h3>\n<p>Toutes les commandes sont lanc\u00e9es avec les droits root :<\/p>\n<pre><code># losetup \/dev\/loop0 whdd-copy-mode  \/\/ o\u00f9 whdd-copy-mode est le fichier extrait du disque mourant \/dev\/sdc avec WHDD.<\/code><\/pre>\n<p>* Installation de multipath-tools qui contient kpartx ;<\/p>\n<pre><code><span class=\"search_hit\"># kpartx<\/span> -a whdd-copy-mode \/\/ modifier le nom de l'image selon le nom utilis\u00e9<\/code><\/pre>\n<p>Ce qui a permis d&#8217;acc\u00e9der aux partitions de l&#8217;image disque whdd-copy-mode :<\/p>\n<pre><code># ls -l \/dev\/mapper\/\r\ntotal 0\r\ncrw------- 1 root root 10, 236  1 Jan 20:52 control\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p1 -&gt; ..\/dm-0\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p2 -&gt; ..\/dm-1\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p3 -&gt; ..\/dm-2\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p4 -&gt; ..\/dm-3\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p5 -&gt; ..\/dm-4\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p6 -&gt; ..\/dm-5<\/code><\/pre>\n<p>Cr\u00e9ation de r\u00e9pertoires sous \/mnt pour monter chaque partition :<\/p>\n<pre><code># mkdir -p \/mnt\/sdc\/sdc{1,2,3,4,5,6}<\/code><\/pre>\n<pre><code>[root@squirrel mnt]# ls -l sdc\/\r\nsdc\/:\r\ntotal 24\r\ndrwxr-xr-x 2 root root 4096  1 Jan 21:01 sdc1\r\ndrwxr-xr-x 2 root root 4096  1 Jan 21:01 sdc2\r\ndrwxr-xr-x 2 root root 4096  1 Jan 21:01 sdc3\r\ndrwxr-xr-x 2 root root 4096  1 Jan 21:01 sdc4\r\ndrwxr-xr-x 2 root root 4096  1 Jan 21:01 sdc5\r\ndrwxr-xr-x 2 root root 4096  1 Jan 21:01 sdc6<\/code><\/pre>\n<p>Certains p\u00e9riph\u00e9riques de \/dev\/mapper ne parviennent pas \u00e0 \u00eatre mont\u00e9s :<\/p>\n<pre><code># mount \/dev\/mapper\/loop0p1 \/mnt\/sdc\/sdc1\r\nmount: wrong fs type, bad option, bad superblock on \/dev\/mapper\/loop0p1,\r\n       missing codepage or helper program, or other error\r\n\r\n       In some cases useful info is found in syslog - try\r\n       dmesg | tail or so.\r\n\r\n# mount \/dev\/mapper\/loop0p2 \/mnt\/sdc\/sdc2\r\n#\r\n\r\n# mount \/dev\/mapper\/loop0p3 \/mnt\/sdc\/sdc3\r\n#\r\n\r\n# mount \/dev\/mapper\/loop0p4 \/mnt\/sdc\/sdc4\r\nmount: wrong fs type, bad option, bad superblock on \/dev\/mapper\/loop0p4,\r\n       missing codepage or helper program, or other error\r\n\r\n       In some cases useful info is found in syslog - try\r\n       dmesg | tail or so.\r\n\r\n# mount \/dev\/mapper\/loop0p5 \/mnt\/sdc\/sdc5\r\nmount: unknown filesystem type 'swap'\r\n\r\n# mount \/dev\/mapper\/loop0p6 \/mnt\/sdc\/sdc6\r\n#<\/code><\/pre>\n<p>Bien s\u00fbr, &#8220;loop0p5&#8221; est la partition swap, dont nous n&#8217;avons pas besoin. Les deux partitions que nous pourrions vouloir r\u00e9parer sont celles li\u00e9es \u00e0 sdc1 (ici loop0p1) et sdc4 (ici loop0p4).<\/p>\n<p>Les partitions li\u00e9es \u00e0 sdc2 et sdc6 se montent correctement et leur contenu est accessible.<\/p>\n<p>L&#8217;\u00e9tape suivante consiste \u00e0 essayer de r\u00e9parer les 2 partitions qui d\u00e9clenchent les erreurs avec fsck.ext4. L&#8217;utilisation de l&#8217;option &#8216;-n&#8217; en premier (mode lecture seule) montre qu&#8217;il y a des erreurs \u00e0 corriger.<\/p>\n<p>Cependant, une seule partition doit \u00eatre v\u00e9rifi\u00e9e et si possible r\u00e9par\u00e9e. Nous pouvons le voir avec &#8220;fdisk -l&#8221; (lanc\u00e9 en root car le fichier image appartient \u00e0 root) :<\/p>\n<pre><code># fdisk -l whdd-copy-mode\r\n\r\nDisk whdd-copy-mode: 37.3 GiB, 40020664320 bytes, 78165360 sectors\r\nUnits: sectors of 1 * 512 = 512 bytes\r\nSector size (logical\/physical): 512 bytes \/ 512 bytes\r\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes\r\nDisklabel type: dos\r\nDisk identifier: 0xace22e9e\r\n\r\nDevice          Boot     Start       End   Blocks  Id System\r\nwhdd-copy-mode1       57993214  78163967 10085377   5 Extended\r\nwhdd-copy-mode2           2048  16386047  8192000  83 Linux\r\nwhdd-copy-mode3 * 16386048  30726143  7170048  83 Linux\r\nwhdd-copy-mode4       30726144  57991167 13632512  83 Linux\r\nwhdd-copy-mode5       57993216  64342015  3174400  82 Linux swap \/ Solaris\r\nwhdd-copy-mode6       64344064  78163967  6909952  83 Linux\r\n\r\nPartition table entries are not in disk order.<\/code><\/pre>\n<p>La partition num\u00e9ro 1 est une partition \u00e9tendue contenant les autres. Par cons\u00e9quent, l&#8217;erreur &#8220;wrong fs type&#8221; de la commande mount sur \/dev\/mapper\/loop0p1 est normale.<\/p>\n<pre><code># cd \/dev\/mapper\/\r\n# ls -l\r\ntotal 0\r\ncrw------- 1 root root 10, 236  1 Jan 20:52 control\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p1 -&gt; ..\/dm-0\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p2 -&gt; ..\/dm-1\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p3 -&gt; ..\/dm-2\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p4 -&gt; ..\/dm-3\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p5 -&gt; ..\/dm-4\r\nlrwxrwxrwx 1 root root       7  1 Jan 20:52 loop0p6 -&gt; ..\/dm-5<\/code><\/pre>\n<pre><code># fsck.ext4 -n loop0p4<\/code><\/pre>\n<p>(<a href=\"http:\/\/meets.free.fr\/Downloads\/whdd-file-partition-fsck.txt\" target=\"_blank\" rel=\"noopener\">Voir le fichier fsck.txt pour le contenu, qui est assez long<\/a>)<br \/>\nMaintenant, le vrai travail :<\/p>\n<pre><code># fsck.ext4 -f -y loop0p4<\/code><\/pre>\n<p>&#8230; (nombreux messages)<\/p>\n<p>Termin\u00e9 :<\/p>\n<pre><code># fsck.ext4 -n loop0p4 | more\r\ne2fsck 1.42.8 (20-Jun-2013)\r\nhome-buntu : propre, 234476\/848640 fichiers, 2178724\/3407872 blocs<\/code><\/pre>\n<p>(Le syst\u00e8me indique que la partition est propre).<\/p>\n<p>Par cons\u00e9quent :<\/p>\n<pre><code># mount loop0p4 \/mnt\/sdc\/sdc4\/\r\n# cd \/mnt\/sdc\/sdc4\/\r\n# ls -l<\/code><\/pre>\n<p>Toutes mes donn\u00e9es sont l\u00e0. Hurrah \\o\/ !<\/p>\n<p>Il ne reste plus qu&#8217;\u00e0 les copier vers un espace permanent:<\/p>\n<pre># rsync -av \/mnt\/sdc\/sdc4\/ \"\/chemin\/vers\/espace d\u00e9di\u00e9\/\"<\/pre>\n<p>Le tutoriel employ\u00e9 pour r\u00e9aliser la partie<strong> kpartx du sauvetage<\/strong> peut se retrouver sur <a href=\"https:\/\/debian-facile.org\/doc:materiel:disques-durs:recuperation-de-donnees-disque-endomage?s[]=kpartx\" target=\"_blank\" rel=\"noopener\">le wiki de la communaut\u00e9 Debian Facile<\/a>.<\/p>\n<p style=\"text-align: left;\">Si ce programme ne garantit pas qu&#8217;il vous permette de r\u00e9cup\u00e9rer les donn\u00e9es sur un disque dur endommag\u00e9 il est cependant tr\u00e8s int\u00e9ressant, du fait qu&#8217;il travaille lentement, en cherchant les donn\u00e9es m\u00e9thodiquement, et en cherchant dans un autre secteur \u00e0 chaque fois qu&#8217;il rencontre une erreur. Il \u00e9vite ainsi de faire trop chauffer le disque dur. En l&#8217;utilisant, j&#8217;ai pu r\u00e9ussir des sauvetages d\u00e9j\u00e0 plusieurs fois, l\u00e0 o\u00f9 par exemple, \u201cdd\u201d avait \u00e9chou\u00e9.<\/p>\n<blockquote>\n<p style=\"text-align: left;\">Article v\u00e9rifi\u00e9 et mis \u00e0 jour en f\u00e9vrier 2026<\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>WHDD est un logiciel libre, \u00e9crit par Andrey UTKIN. Clone d&#8217;un freeware nomm\u00e9 MHDD, il permet de r\u00e9aliser diverses op\u00e9rations sur un disque dur, incluant la r\u00e9cup\u00e9ration de donn\u00e9es sur un disque dur endommag\u00e9, dans certaines limites. Son avantage est d&#8217;abord qu&#8217;il est \u00e9crit dans un langage bas niveau, (il s&#8217;adresse aux couches logicielles les [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-558","post","type-post","status-publish","format-standard","hentry","category-tutoriels"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/posts\/558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/comments?post=558"}],"version-history":[{"count":13,"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/posts\/558\/revisions"}],"predecessor-version":[{"id":1506,"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/posts\/558\/revisions\/1506"}],"wp:attachment":[{"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/media?parent=558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/categories?post=558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orditux.org\/floss\/wp-json\/wp\/v2\/tags?post=558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}