Recopier une partition
Le 28 June 2008 à 15:55.

Dans la série des problématiques classiques lorsque l'on change de disque, arrive rapidement celle du "comment diantre vais-je transférer la partition du MauditOS sans repasser deux heures à tout ré-installer" !! Pas si compliqué en réalité... si c'est fait sous Unix Wink

Préambule

Pour fixer le cadre, prenons donc deux disques durs de marque et de taille évidemment différentes, avec cependant assez de place pour transférer les données d'un côté vers l'autre. Le second disque est considéré comme vide. Ce n'est pas obligatoire mais dans le cas contraire, c'est à vos risques et périls si chemin faisant vous perdez de précieuses données...

Sur le premier disque nous avons une partition primaire contenant VilainOS. Le but va donc être de créer une partition de même taille sur l'autre disque, d'y recopier notre partition d'origine, et de garder l'espace restant pour une utilisation plus sérieuse. Au final, nous aurons un nouveau disque qui s'amorcera comme l'ancien.

Pour faire tout cela, nous allons utiliser un simple adaptateur USB/IDE. Ainsi le disque sera toujours /dev/sdb et la partition source ou cible /dev/sdb1.

Sauvegarder la partition originale

Malic et Dab (qui interviennent souvent ici) m'avaient parlé de trois outils libres répondant au besoin : CloneZilla, Partimage Is Not Ghost ou plus simplement PING, et justement puisqu'on en parle, PartImage.

Alors certes, comme le sous-entend PING partImage n'est pas Ghost, mais comparé aux deux autres, pour une utilisation ultra épisodique, il a l'avantage de ne pas non plus être une usine à gaz...

partImage s'utilise soit en ligne de commande, soit par une petite interface semi-graphique en nCurse. Le plus simple est de le lancer d'abord la ligne de commande avec les paramètres de base, puis ensuite d'affiner les options avec l'interface.

Pour ce faire, il suffit de l'invoquer comme suit :

root#partimage -z1 save /dev/sdb1
root# 

Cela a pour effet de demander à partImage de créer dans le dossier courant une copie des données de la partition /dev/sdb1 en activant au passage une compression GZIP.

L'interface graphique s'affiche alors et vous pouvez affiner vos besoins en augmentant ou supprimant le taux de compression, en ajoutant ou pas une description, bref tout ce que vous voulez jusqu'au moment où, fin prêt, vous pressez la touche F5 pour démarrer la sauvegarde...

Pour cette opération nous aurions pu utiliser la commande dd avec peu ou prou le même résultat. Mais l'avantage de partImage est qu'il ne sauve que l'espace disque utilisé entraînant un très appréciable gain de temps quant la partition n'est pas pleine. Pour une partition de 10Go pleine à 60%, en USB 2.0, cela m'a pris 10 minutes tout rond. L'astuce par rapport à dd est que partImage connaît le système de fichier que vous cherchez à copier, et sait donc où celui-ci s'arrête. Attention cependant, le support NTFS est plus faible que celui des autres systèmes. Tout cela ne marchera donc bien qu'avec une partition peu fragmentée. Le cas échéant, vous n'avez plus qu'à utiliser.. dd...

Création de la partition cible

L'étape suivante est de recopier les paramètres de notre partition. Le bon outil pour cela est encore parted que nous avions vu pour la transformation d'une machine physique en machine virtuelle. Là il va juste nous servir à récupérer la taille et la position de notre partition d'origine :

#parted /dev/hda
(parted)unit s
(parted)print
Model: IBM-DTTA-351010 (ide)
Disque /dev/hda : 19541088s
Taille des secteurs (logiques/physiques): 512B/512B
Table de partition : msdos
Numéro Début Fin Taille Type Système de fichiers Fanions
1 63s 19519919s 19519857s primary ntfs démarrage
(parted)quit
root#
root# 

Les chiffres importants ici sont le début et la fin de notre partition, soit 63 et 19519919. Mais avant de débrancher définitivement notre vieux disque, nous allons lui faucher son amorce. En effet, il ne vous aura pas échappé que notre partition ne démarre qu'au 64ième secteur, ce qui implique un espace de 63 secteur qui précède la partition, soit 512x63=31ko représentant l'amorce du disque. Et vu que c'est une amorce pour PasBeauOS, nous allons devoir la sauvegarder en vue d'une transplantation sur le nouveau disque

root#dd if=/dev/sdb1 of=amorce.image count=63 bs=512
root# 

Pour info, lorsque vous démarrez sur disque et que vous avez comme seul résultat une infamante liste du style L99 99 99 99 99 99 99...etc., c'est généralement que l'amorce est quelque peu vrillée...

Bon, il est maintenant possible de débrancher ce disque de l'adaptateur IDE-USB pour le remplacer par notre nouveau support.

La première chose à faire est de détruire les partitions existantes. Cela se fait très simplement avec parted en les listant d'abord avec la commande print, puis en les supprimant une à une avec la commande rm NUMERO.

Ensuite, lorsque le disque est vide de partition, il nous faut recréer celle du disque d'origine en s'aidant du chiffre que nous avons noté en rouge :

root#parted /dev/hda
(parted)unit s
(parted)mkpart primary 63 19519919
(parted)quit
root#
root# 

Nous avons maintenant une partition identique sur le second disque.

Recopie des données

Maintenant, pour recopier les données que nous avons précédemment sauvegardé avec partImage, il suffit de l'invoquer dans l'autre sens :
root#partimage restore /dev/sdb1 native.image.000
root# 

Là, c'est fini en 5 minutes.... Dernière étape, insérer la fameuse amorce que nous avons chipé sur le vieux disque.

root#dd if=amorce.image of=/dev/sdb bs=512 count=63
root#sync
root# 

Et voilà, le nouveaux disque et sa nouvelle partition sont prêts, et le tout est amorçable comme avant.

Conclusion

Les outils spécialisés de clonnage permettent sûrement de faire tout cela plus rapidement pour peu que l'on ait le temps d'apprendre à les utiliser.. Disons que pour l'usage d'un néophyte, partImage est un vrai plaisir Smiling

Commentaires

Zanko, le 29 juin, 2008 - 07:51

Puisque tu parles encore de partitions je tiens à faire la promo d'un outil qui a sauvé mon home deux fois, dont une il y a quelques jours : Testdisk. Et en prime un conseil pour ceux à qui il viendrait l'idée de trifouiller leurs partitions : dans le cas où vous modifieriez la table de partitions, TOUJOURS rebooter avant de faire quoi que ce soit sur le disque (ou si vous trouvez comme moi que rebooter ça fait windows, déconnecter le disque et le reconnecter si la racine est pas dessus), car sinon vous écrivez vos données sur une partie du disque qui correspond à une partition de l'ancienne table de partitions.

Sinon merci pour partimage, je l'ajoute à mes bookmarks ça peut toujours servir. Par contre, arrête de faire des tutos aussi bons et aussi souvent, ça me déprime après quand je passe du temps à écrire un billet et qu'arrivé à la fin je ne peux m'empêcher de penser "c'est pas mal mais ça vaut pas artisan numérique" Glad.

Dab, le 29 juin, 2008 - 22:26

J'imagine que les 31ko d'amorce contienent le chargeur, genre grub lilo ou autre ?
Lorsque tu recopie ton amorce tu n'en copie que le 512 premiers octets, qui de mémoire représentent la table des partitions. Ca boot quand même ?

Ulhume, le 30 juin, 2008 - 01:22

@Dab oups, boulette, en effet, s'était count=63 qu'il fallait lire Smiling

Ulhume, le 30 juin, 2008 - 01:24

@Zanko, ok j'arrête, façon je suis dans les cartons là Arf c'est fou le nombre de me**es que l'on peu accumuler en seulement 4 ans, c'est déprimant.

Poster un nouveau commentaire

Si vous avez détecté une erreur, coquille ou bêtises du même ordre, merci de plutôt passer par le formulaire de contact
Pour vous abonner au flux des commentaires sur cet article, clickez ici.
Pour répondre à quelqu'un, utilisez plutôt le lien répondre qui se trouve en haut (ou en bas) à gauche de son commentaire.
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement. Si vous avez un compte gravatar, l'utilisez pour afficher votre avatar.
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <div> <p> <br>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Every instance of custom tags in the input text will be replaced with a specific tool shortcut.

Plus d'informations sur les options de formatage


Commentaires récents
Porte secrète