Objet : Liste pour les discussions techniques (liste à inscription publique)
Archives de la liste
- From: Benoit Hamet <benoit.hamet AT laposte.net>
- To: Frederic Couchet <fcouchet AT april.org>
- Cc: technique AT april.org, Jean-Marc LONG <jm.long AT laposte.net>
- Subject: Re: [TECH] [Jean-Marc LONG] RE: Connaissances Linux
- Date: Thu, 04 Oct 2007 21:59:22 +0200
Bonjour,
> Bonjour,
>
> Il m'a été transmis une copie de disque dur sur un fichier (commande dd et
> 17 fichiers de .000 à .0016)
> Je souhaite restaurer cette copie (sur un autre disque) afin de retrouver le
> disque initial.
> Je précise que le fichier source (HDA1) et le disque cible (SDB5) sont
> externes et reliés à l'UC par USB.
> Je n'ai pas installé Linux, car j'en ai peu l'utilité.
> J'ai donc essayé en utilisant un CD-Live (Knoppix puis Kaella) et en
> autorisant le disque cible en écriture.
> Je peux copier le fichier tel quel, mais je suis incapable de trouver la
> bonne commande DD pour effectuer la restauration désirée.
> "Ne trouve pas le fichier sur HDA1".
Je ne suis pas sûr d'avoir tout compris. Pour éviter de mauvaises
manipulations, je vais reformuler ce que j'en ai compris.
On vous a donné une copie d'un disque dur, faite par dd, qui est nommé
hda1. J'en déduis que c'est la copie d'une partition d'un autre disque
(il aurait sans doute été plus simple d'avoir l'intégralité du disque,
mais passons). Celui-ci se présente sous la forme de 17 fichiers.
Il faut d'abord vérifier que la taille de SDB5 correspond exactement à
la taille de l'ancienne partition. Ensuite, on va écrire directement les
fichiers sur le disque (enfin la partition sdb5), en décalant à chaque
fois de la taille du fichier précédent : (en supposant que vous êtes
dans le répertoire qui contient les 17 fichiers et que le préfixe est hda1).
export SIZE=0
for i in `seq 0 16`; do dd if=hda1.00$i of=/dev/sdb5 bs=4096
seek=$(($SIZE/4096)); SIZE=$(($SIZE + `du -b hda1.00$i|cut -f 1`)) ; done
pour la commande dd: if == le fichier en entré
of == le fichier en sortie
seek == le décalage sur le fichier de sortie (car il faut écrire les
blocs les uns à la suite des autres)
bs=4096 c'est une taille arbitraire, qui permet d'aller beaucoup plus
vite que les 512 octets classiques.
Par contre il faut faire extremement attention si vous avez une
partition après /dev/sdb5, car si vous vous ratez (ou mon script), vous
pourriez écraser la partition suivante ...
Une solution prudente serait de faire une concatenation des fichiers en
un seul gros fichier ( un cat hda1.* > full_hda1 devrait le faire (en
vérifiant l'ordre de concaténation), mais il faut avoir assez d'espace
sur l'un des disques durs. Puis faire la manip avec un "simple" dd
if=full_hda1 of=/dev/sdb5 bs=4096 ...
Il y a sans doute plein d'autre chose possible ... C'est une solution,
il y en aura peut être d'autre, et ne pouvant pas tester, je ne garantie
rien.
Cordialement.
Benoît.
>
> Voilà,
>
> Merci
>
> Jean-Marc LONG
- [Jean-Marc LONG] RE: Connaissances Linux, Frederic Couchet, 04/10/2007
- Re: [TECH] [Jean-Marc LONG] RE: Connaissances Linux, Laurent GUERBY, 04/10/2007
- Re: [TECH] [Jean-Marc LONG] RE: Connaissances Linux, Benoit Hamet, 04/10/2007
Archives gérées par MHonArc 2.6.16.