Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

Clonage & restauration de partition ou disque dur

Faire une sauvegarde exacte (clonage) d'une partition ou d'un disque complet peut se révéler très utile. Par exemple pour dupliquer un système sur un PC identique (avec une connexion réseau), pour sauvegarder une partition ou un disque dur complet (IDE, Sata, SSD, carte mémoire) avec tout son contenu, pour pouvoir le(s) restaurer si on doit remplacer son disque dur ou si on a laissé le système partir à la dérive.
On utilisera dd en console ou Partimage (graphique) pour tous types de partitions Linux ou FAT, et ntfsclone (console) pour les partitions NTFS. Ces outils sont disponibles par défaut sur de nombreux LiveCDs, tel Knoppix :)

À noter : On utilisera le pipe
le fait pour un programme d'envoyer au fur et à mesure les données qu'il traite à un autre programme
, extrêmement intéressant ici puisque les données copiées ou clonées peuvent être (dé)compressées en même temps qu'elles sont écrites : puissant ça :o)

Pour la Sauvegarde et/ou copie du contenu d'une partition : cp comme tar permettent de faire une copie conforme du contenu d'une partition (de tout ce qui peut être monté en fait). Le principe est différent du clonage, mais le résultat peut être le même. Détails sur la page Sauvegarder.

Pré-requis

Connaissances

  1. Savoir un peu disque durce qu'est un disque dur ou un SSD
  2. Avoir identifié la ou les partitions / disque qu'on veut cloner ainsi que leur destination ;
  3. Être en mesure de taper quelques commandes ;
  4. Il est conseillé de connaître un peu ce sur quoi on peut agir :
      - Le MBR est le Master Boot Record ou secteur principal de démarrage. Il est situé sur le 1er secteur de chaque disque dur (le 1er secteur de la 1ère piste du 1er cylindre, soit = CHS 0 0 1). Il y en a un seul par disque dur. Gère les disques durs et tailles de partitions jusqu'à 2,2 To maximum.
      - L'EBR est l'Extended Boot Record ou secteur de démarrage étendu. Il est l'équivalent pour les partitions logiques de ce qu'est le MBR pour les partitions primaires. Il y en a un par partition étendue.
      - La table d'allocation des fichiers : une par partition. Ce n'est ni plus ni moins qu'un répertoire permettant de retrouver tous les fichiers stockés dans la partition.
      - GPT : table de partitionnement GUID, en anglais GUID Partition Table (GPT). Nouveau standard pour décrire la table de partitionnement d'un disque dur. Fait partie du standard EFI (qu'Intel propose en remplacement du PC BIOS/MBR). GPT gère les disques durs et partitions jusqu'à 9,4 Zo (9,4 trilliards d'octets).

Équipement

  1. Disposer d'un système Linux, LiveCD ou installé (comme ceux conseillés ci-dessous).
    Pour toute opération sur une partition voir les articles :
      - LiveCDs permettant le partitionnement, le déplacement de partitions... (GParted, PartedMagic, SystemRescue & TRK) ;
      - Logiciels QParted ou Diskdrake ;
  2. Si le disque est ancien (type IDE) activez le DMA : C'est fait automatiquement dans la majorité des cas. Mais si vous constatez une lenteur importante, il faut vérifier si le mode dma est bien activé. Voici comment l'activer sur le disque sda (passer en root) :
    hdparm -d1 /dev/sda (entrée).
    Pour l'activer sur un second disque, même commande en remplaçant "sda" par "hdb".
    Après ça le temps de copie est divisé par 4 (sur mon PC = 300 Mo au lieu de 80 Mo par minute. Détails sur le guide optimisation disques avec hdparm.

MBR / EFI et table de partitions

Sauvegarder le MBR (1er secteur du disque dur)

Si vous sauvegardez des partitions une à une et voulez pouvoir les utiliser pour restaurer un système fonctionnel (Linux comme Windows), il vous faut pouvoir restaurer son MBR

  • Sauvegarder le MBR :
    dd if=/dev/sda of=mbr-sda-sauvegarde count=1 bs=512 Celà stocke les 512 premiers octets du disque (contenant le MBR & la table de partitions primaire) dans le fichier "sauvegarde-du-mbr-sda", que vous pouvez alors transférer sur un support sûr.
  • Restaurer le MBR :
    Soyez prudent ! celà peut détruire la table de partitions existante, et donc vous priver de l'accès aux données présentes sur ce disque)
    dd if=mbr-sda-sauvegarde of=/dev/sda
    Et si vous souhaitez juste restaurer le code du MBR SANS les entrées de la table de partition primaire, restaurez seulement les 446 premiers octets :
    dd of=/dev/sda if=mbr-sda-sauvegarde bs=446 count=1 En effet, le premier secteur du disque, appelé couramment MBR, est composé de 512 octets : 446 pour le MBR, et 64 pour la table de partition primaire.

Avancé : Sauvegarder GRUB seul (pas la table de partition)

En mettant bs=446 dans la commande dd, on sauvegarde uniquement ces 446 bits, et donc Grub sans la table de partitions (voir ci-dessus).
Sans celà, si on change le partitionnement puis qu'on restaure l'ancienne table de partition, on va au devant de problèmes... qu'on évite en ne sauvegardant & restaurant que GRUB :
dd if=/dev/sda of=mbr-sda-sauvegarde count=1 bs=446 dd of=/dev/sda if=mbr-sda-sauvegarde bs=446 count=1 Merci à Villa Nicolas de linux-Azur.

Sauvegarder la table de partitions

Partition BIOS

  • Sauvegarder la table de partition étendue :
    sfdisk -d /dev/sda > sda.partition (note: sfdisk est dans le paquetage util-linux)
  • Restaurer la table de partition (voir l'avertissement ci-dessus à propos du MBR) :
    sfdisk --force /dev/sda < sda.partition et redémarrer.
    Comme Seb Wills (voir Liens) je recommande de conserver avec cette sauvegarde un copié/collé de la table de partition telle qu'elle apparait dans l'utilitaire de partitionnement de votre choix comme fdisk -l. Ça vous sera bien utile si vous devez repartitionner le disque à la main avant de restaurer des images de partition.

Partition GPT / UEFI

  • Lister la table de partition GPT :
    gdisk -l DEVICE (où DEVICE = /dev/sdX)
  • Sauvegarder la table de partition GPT :
    sgdisk --backup=FILE DEVICE
  • Restaurer une table de partition GPT :
    sgdisk --load-backup=FILE DEVICE
  • Cloner la table de partition GPT depuis /dev/sda sur /dev/sdb :
    sgdisk -R=/dev/sdb /dev/sda
  • Rendre son GUID unique, puisqu'il a été cloné à l'identique de /dev/sda :
    sgdisk -G /dev/sdb

Remarque : si sgdisk n'est pas sur votre (live) système, installez-le. Exemple sur un live CD Ubuntu :
aptitude update
aptitude search gdisk
aptitude install sgdisk
(de mémoire ; le nom du paquetage logiciel peut être légèrement différent).

Sources, liens

Clonage / restauration conformes avec dd et gzip

La commande dd effectue une copie octet par octet (clonage) de blocs, qu'elle passe ("pipe") à gzip ; le résultat est alors écrit par dd dans un fichier qui contient l'image exacte de la partition. Tous les types de partitions sont supportés, puisque l'opération est de type bas-niveau. Néanmoins il existe un outil encore plus puissant pour les partitions NTFS.

La (ou les) partitions à sauvegarder ne doi(ven)t PAS etre montée(s)
En effet, on ne veut pas que le contenu à cloner soit modifié pendant l'opération. Or, il ne peut pas être modifié s'il est démonté (ou monté en lecture seule / read-only). Donc :

  • Soit vous démarrez la machine à sauvegarder avec un LiveCD, qui ne touche _pas_ au disque dur. C'est la méthode la plus sûre et la plus simple ; elle apporte de plus un environnement graphique complet type KDE ou Gnome ;
  • Soit vous démarrez le système en mode simple utilisateur (single-user mode) et montez uniquement les partitions nécessaire au fonctionnement du système (dont celle contenant les programmes nécessaires à l'opération (dans ce cas, assurez-vous de disposer d'un moyen de restaurer l'image qui ne dépende pas d'avoir l'OS installé !).

Une partition avec dd

Dédé (dd) est fourni avec tout système Linux, "live" inclu.

  • Monter la partition où on veut écrire la sauvegarde (pas celle(s) qu'on sauvegarde)
    Cloner et compresser la partition 3 du disque dur maître /dev/sda3 :
    dd if=/dev/sda3 | gzip | dd of=/chemin_vers/sauvegarde.gz
  • Restaurer l'image avec :
    gzip -dc /chemin_vers/sauvegarde.gz | dd of=/dev/sda3
    ici, on décompresse le fichier avec gzip (-d), qui envoie le résultat à stdout (-c) et le passe ("pipe" en anglais) vers dd qui l'écrit sur /dev/sda.

Clonage ou copie directe d'une partition

  • Requis : la partition où cloner doit etre au moins aussi grande que celle à cloner, & les partitions ne doivent PAS etre montées :
    mount affiche les partitions montées ;
    umount /dev/sdXN démonte la partition "sdXN".
  • Cloner la partition N du DD "a" sur la partition Y du DD "b" :
    dd if=/dev/sdaN of=/dev/hdbY

MBR / EFI et table de partitions

Il ne reste plus qu'à sauvegarder le MBR (ou partition EFI) et la table de partitions.

Cloner / sauvegarder un disque dur complet

  • Monter la partition où on va écrire la sauvegarde (mais pas celles à sauvegarder),
    Clone tout le DD (ici sda) dans une image compressée :
    dd if=/dev/sda | gzip | dd of=/chemin_vers/sauvegarde-sda.gz
  • Restaurer la sauvegarde :
    gzip -dc /chemin_vers/sauvegarde-sda.gz | dd of=/dev/sda

Exemple : sauvegarde d'une carte mémoire

Simple précaution avant de formater la Memory Stick Pro Duo (Sony MSX-M2GS/X MagicGate) afin d'être sûr des options de formatage (taille des cluster, partitions). Je tape dmesg | tail juste après avoir inserré ma carte, ce qui affiche le device : /dev/sde. Bien sûr la carte n'est PAS montée.

# dd if=/dev/sde | gzip | dd of=/mnt/sauvegardes/MSDUO2048.gz

3938304+0 enregistrements lus
    3938304+0 enregistrements écrits
    2016411648 bytes (2,0 GB) copied, 181,644 s, 11,1 MB/s
    3822+1 enregistrements lus
    3822+1 enregistrements écrits
    1957031 bytes (2,0 MB) copied, 181,643 s, 10,8 kB/s

L'opération a pris 3' et produit un fichier MSDUO2048.gz d'à peine 2 Mo :)
J'ai maintenant de quoi restaurer le formatage usine de la carte si je commets une erreur par exemple, et ça de manière bien plus sûre et aisée que sous Windows.

Clonage direct de disque dur

  • Requis : un PC, au moins 2 disques (celui où cloner étant de contenance égale ou supérieure à celui à cloner), & les partitions ne doivent PAS etre montées
  • Sauver l'image exacte du premier DD et de son secteur de boot (MBR) avec :
    dd if=/dev/sda of=/dev/hdb, puis
    dd if=/dev/sda of=/dev/hdb bs=512 count=1
    Ici sda = le premier DD du PC & hdb le 2nd DD.
    Après quoi le DD 2 est la copie exacte (clone) du DD 1.

Trucs & astuces pour le clonage

Où stocker les images ?

Chacun sa soupe préférée :) Personnelement je place ces sauvegardes sur un disque dur externe USB 2. Je grave sur DVD-/+RW celle(s) que je ne *veux pas* perdre.
Quant à la solution en réseau détaillée ci-contre, elle s'impose si on a un LAN.
Remarque : mieux vaut être sûr de l'état du disque où on veut sauver une image ; ces dernières n'aiment pas vraiment les petits clusters défectueux...

Compresser l'image de la partition clonée au maximum

Nécessite un processeur puissant et/ou pas mal de temps... :
dd if=/dev/sda1 bs=1M | bzip2 --best -c < \
/mnt/autre_partoche/sda1_image.img.bz2

Pour les curieux, bzip2 --best : bzip2 compacte des fichiers en utilisant l'algorithme de réduction de texte par tri de blocs de Burrows-Wheeler, et le codage d'Huffman. La réduction est généralement nettement meilleure que celle atteinte par des compacteurs plus conventionnels basés sur LZ77/LZ78, et approche les performances de la famille des compacteurs statistiques PPM. (man bzip2).

Dépasser les limites de taille de fichier avec split

Lorsqu'on crée des images disque, il arrive qu'on se heurte à diverses limitations de taille maximum de fichier. split permet de gérer cela.

  • Créer une image de la première partition du DD 1 en fichiers <2 Go.
    dd if=/dev/sda1 | gzip -c | split -b 2000m - /mnt/hdc1/backup.img.gz
    Le résultat est passé à gzip qui le compresse.
    L'option -c est utilisée pour passer le résultat à stdout. L'image compressée est alors "pipée" à l'outil split :
    -b 2000m précise la taille maxi d'un fichier individuel (k pour kilobytes ou m pour megabytes). L'option - dit à split de lire depuis stdin (autrement split interprèterait '/mnt/hdc1...' comme le fichier à "spliter"). /mnt/hdc1... est le préfixe pour les fichiers créés. Split créera des fichiers nommés "backup.img.gz.aa", "backup.img.gz.ab", etc.
  • Restaurer la sauvegarde multi-fichiers avec :
    cat /mnt/hdc1/backup.img.gz.* | gzip -dc | dd of=/dev/sda1 Cat ré-assemble le contenu des fichiers individuels et passe les fichiers à stdout dans l'ordre.
    Les résultats sont "pipés" vers gzip pour la décompression, et sont écris sur la première partition du 1er DD avec dd.

Réduire la taille de l'image

Si lors de la restauration, on obtient une reproduction réellement exacte du système de fichiers originellement présent sur la partition, cette méthode présente un gros défaut : Elle sauve bien toute une partition ou un disque, mais ce faisant elle sauvegarde également tout un tas de fichiers inutiles et notamment les fichiers effacés (effacer un fichier le retire de la table d'allocation du système de fichiers, mais il reste physiquement sur le disque !). La taille de l'image créée est alors bien supérieure à celle des informations utiles à conserver, et la compression plus longue !

La solution à ce problème est donnée par François Lemarchand sur sa page Linux : Sauvegarder un système de fichiers : on remplit l'espace libre de la partition à sauvegarder avec un caractère unique, puis on l'efface. Celà constituera un vrai boulevard pour gzip.
Exemple avec la partition Windows /mnt/win :

  1. Monter cette partition avec :
    mount /mnt/win
  2. On crée un gros fichier rempli de zéros sur la partition à sauvegarder :
    dd if=/dev/zero of=/mnt/win/dummy 2> /dev/null
    Et on efface ce fichier :
    rm /mnt/win/dummy
    Celà quelque soit le système de fichiers de la partition. De fait, la partie non utilisée de la partition ne contiendra plus que des zéros. Le recours à ces commandes revêt néanmoins un aspect un peu "bourrin" (vous aurez noté le 2> /dev/null qui est là pour empêcher l'affichage d'un message d'erreur quand dd ne trouve plus de place sur le système de fichier), mais ceci fonctionne bien et c'est ce que nous utiliserons pour ne pas alourdir le script de sauvegarde.
    N'utilisez pas ces commandes si le système de fichier est corrompu, & que vous désirez garder la possibilité de récupérer les données "perdues"

Que faire si le disque est endommagé & que dd semble bloqué ?

Voir ci-dessous "Récupérer les données" et du côté de dd_rescue, ou le script dd_rhelp, comme conseillé par Seb Wills ("Liens" ci-dessous).

  • dcfldd : Une version améliorée de dd qui affiche notamment une barre de progression pendant la copie ; accepte les parametres de dd. Pratique de visualiser la progression / durée pendant une grosse copie.

Clonage de partitions entre 2 machines sur le réseau

Comment transférer l'image de la partition ou du disque vers une autre machine ?

Sauvegarder sur un réseau (local ou distant)

  1. Rappel : La ou les partitions à sauvegarder ne doi(ven)t PAS etre montée(s). Utilisez une des 2 méthodes indiquées (le paragraphe 'dd').
  2. Les partitions démontées, sous Linux, on utilise dd pour lire le contenu du disque dur (ou une de ses partitions). Et la sortie de dd peut être écrite 1) sur une partition (ex : disque dur externe monté), ou 2) passée en live ("piped" en anglais) par le réseau vers une machine distante disposant de dd. Cela fonctionne aussi avec les partitions NTFS, pour lesquelles on vous recommande l'outil spécifique pour NTFS, très performant (voyez ci-dessous).
  3. Exemple :
    dd if=/dev/sda1 bs=1k conv=sync,noerror | gzip -c | \
      ssh -c blowfish user@hostname "dd of=filename.gz bs=1k"

    Explications :
    - On dit à "Dédé" de lire le contenu de /dev/sda1. Au cas où il ne peut lire un bloc en raison d'une erreur de bloc, conv=sync,noerror lui indique d'écrire au minimum quelque-chose d'une taille correcte (même si le disque dur ne montre aucune erreur, souvenez-vous que dd va lire chaque bloc, y-compris ceux que l'OS évite car ils sont marqués comme mauvais "bad blocs"). Ne vous étonnez donc pas si le Dédé semble avoir du mal à lire certains blocs. Mais voyez plutôt comment gérer cette situation :
    - bs=1k fixe la taille des blocs lus par dd à 1ko. L'auteur ne connait pas la valeur optimale, mais elle doit n'être pas plus grande que la taille des blocs sur le disque, car sinon un bloc abîmé pourrait masquer le contenu d'un bon. 1ko est un réglage sûr.
    - La sortie de Dédé est transmise (en anglais "piped") à gzip pour la compression (qui peut être réalisée sur l'autre machine si elle est plus rapide, exemple ci-dessous avec la restauration).
    - le flux de données compressées est transmis au moyen d'une connexion sécurisée ssh à une autre machine Linux (installé ou LiveCD).
    - L'option -c blowfish (cipher) indique à ssh de sélectionner l'encryption blowfish, bien plus rapide que celui par défaut --et bien adapté ici.
    - Finalement une autre commande dd est lancée sur la machine distante pour lire le flux des données compressées et les écrire dans un fichier. Si vous préférez cloner une partition directement sur une partition de la machine distante, vous pouvez la passer (pipe) à gunzip -c & l'écrire directement sur la partition de la machine distante au lieu de l'écrire dans un fichier.

Restaurer par le réseau

C'est la même procédure, dans l'autre sens.

  1. Sur la machine où est stockée l'image compressée :
    dd if=filename.gz | \
      ssh -c blowfish root@192.168.x.x "gunzip -c | \
      dd of=/dev/sda1 bs=1k"
    .
    Pour celà il vous faut un LiveCD sur la machine cible avec UN serveur ssh lancé. Voyez le "Mini guide Knoppix" ci-dessous.
    - On n'inclut pas conv=sync,noerror, cette option de dd pouvant, dans certaines circonstances, corrompre les données écrites (elle indique à dd de ne plus attendre l'arrivée de données si un bloc est indisponible).
    - La partition doit exister (!) ; et elle doit être d'une taille suffisante pour y écrire toutes les données. Ce n'est pas un problème si elle est "trop" grande : vous pourrez toujours agrandir le système de fichier copié pour qu'il remplisse cet espace supplémentaire, par ex. avec ext2resize pour le ext2. Ou vous pourriez persuader l'outil d'édition de partition de faire celà.

Idem en utilisant Knoppix

Comment utiliser un liveCD Knoppix pour sauvegarder facilement tout système au travers d'un réseau : En utilisant lel serveur ssh inclu dans Knoppix.

  • Il vous faut etre "root". Tapez simplement su -.
  • Si votre LiveCD est sur la machine de destination, il vous faut lancer le serveur ssh. Sous KDE celà peut se faire depuis le menu ; sinon tapez simplement
    /etc/init.d/sshd start (en root). Créez alors un mot de passe pour root ; il vous sera demandé lors de la connexion ssh : passwd root et tapez-le 2 fois comme indiqué.
  • Knoppix (et la plupart des LiveCD) obtient automatiquement une adresse IP par DHCP, aussi si vous avez un serveur DHCP sur votre réseau local (la plupart des "Box" ADSL le font par défaut) vous n'avez qu'à connaitre l'IP de la machine (en tapant ifconfig par exemple) : c'est cette IP qui servira de nom de machine dans les commandes ssh.
    Si vous n'avez pas de serveur DHCP, il vous faut attribuer une adresse IP manuellement, avec par exemple
    ifconfig eth0 192.168.x.y. netmask 255.255.255.0 up && route add default gw [IP de votre passerelle]

Clonage / restauration conformes avec Partimage

Partimage est un utilitaire Linux (licence GPL2) permettant la sauvegarde des partition du disque dur utilisant un système de fichier supporté dans un fichier image. L'image peut être compressée au format Gzip ou Bzip2 afin d'économiser de l'espace disque ou scindée en de multiples fichiers pour être copiée sur des médias amovibles comme des CDs / DVDs. Depuis la version 0.6.0, il est possible de déporter le fichier image au travers d'un réseau, mais il est aussi possible de sauvegarder/restaurer l'image par le réseau grace à Samba ou NFS.
Partimage ne prend que les données présentes dans les partitions afin de gagner en rapidité et en efficacité les "blocs" non utilisés ne sont pas sauvegardés dans le fichier image contrairement à l'utilitaire 'dd' par défaut.

  • Vous pouvez restaurer votre partition linux au moindre problème. Quand le problème survient vous n'avez qu'à restaurer le fichier image et 10 minutes plus tard la partition est conforme à l'originale. Pour plus de sécurité le fichier image peut être gravé sur un CDR/RW de même si vous ne voulez pas prendre de l'espace disque.
  • Vous pouvez l'utiliser afin d'installer (cloner) des ordinateurs identiques. Par exemple 50 ordinateurs identiques à installer sur lesquels vous souhaitez installer le même système d'exploitation.
  • Si vous ne voulez pas installer Partimage, nous vous conseillons d'utiliser SystemRescueCd. Ce livecd conçu par l'équipe de Partimage permet d'utiliser Partimage sur un ordinateur sans système d'exploitation ou qui est deffecteux.
  • Le suport du système de fichiers NTFS n'est actuellement pas entièrement garanti : La sauvegarde d'une partition NTFS devrait être possible si la partition originale n'est pas trop fragmentée et si elle n'est pas compressée.
  • Page officielle de Partimage

Clonage et installation automatique avec SystemImager

Tutoriel assez complet sur Howto Forge : Creating Images Of Your Linux System With SystemImager.

Sauvegarde & restauration de disques NTFS

Sauvegarder, redimensionner, déplacer & restaurer Windows® (disques NTFS)

Pré-requis

linuxntfs logo elwinPréparer la ou les partition(s) Windows :
- Défragmenter le plus complètement possible la partition Wiwi : sous Windows, en mode sans échec, par exemple avec l'excellent JKDefrag.
- Éteindre le disque (et pas mettre veille quelqu'elle soit).

Sauvegarder la table de partition

  • MBR/BIOS:
    sfdisk -d /dev/sdX > sda.partition
    Restorer : sfdisk /dev/sdX < sda.partition
  • GPT/UEFI:
    sgdisk --backup=/chemin/vers/sdX.gpt /dev/sdX
    Restorer : sgdisk --backup=/chemin/vers/sdX.gpt /dev/sdY

En fonction de vos connaissances et besoins, vous pourriez voir :

ntfs_clone : Atouts et faiblesses

linuxntfs logo elwinLe but du projet Linux NTFS est d'apporter le support NTFS le plus complet sous Linux, en dépit des obstacles posés par ce FS fermé. Avec les outils inclus dans ntfsprogs (dont ntfsclone & ntfsresize, détaillés ci-dessous --& ssh-- l'utilisateur sous Linux dispose d'outils puissants pour gérer des disques ou partitions NTFS, de Windows ® XP à 8.1.
ntfsprogs est inclu et/ou installable dans toutes les bonnes distributions Linux, y-compris de nombreux LivesCD (tels Knoppix ou TRK).

Pourquoi ntfsclone ?

linuxntfs logo sleepflint

  • Effectuer un mirroring (image "ghost") sans rien devoir installer sur la machine Windows
  • Compresser au format de votre choix
  • Excellent support des sauvegardes sur le réseau du fait qu'est basé sur Linux
  • Étapes manuelles : vous voyez ce que vous faites à chaque étape
  • Vérifier des images en les montant directement via mount
  • Peu adapté au débutant
  • Difficile d'implémenter une sauvegarde incrémentale
ntfsclone permet de réaliser une copie conforme de toute partition NTFS

ntfsresize v 1.13.1.1 et plus supporte le système de fichiers NTFS de Windows Vista (notez que redimensionner des partitions Vista avec une version antérieure rendra Vista incapable de démarrer, sans toutefois affecter aucune donnée personnelle).

Restaurer une partition NTFS système ou de démarrage sur la même partition que celle orignalement sauvegardée ne posera pas de problème particulier.

Par contre si vous voulez copier / déplacer ou restaurer une partition NTFS de type système ou démarrage, sur un ordinateur, disque ou une partition différente (par ex. sda1→sda2, ou sda1→hdb1), alors il vous faut prendre des précautions supplémentaires pour que Windows puisse démarrer.

Le gestionnaire de démarrage

ntfsclone réalise une copie exacte du système de fichiers NTFS, mais ne s'occupe pas de la question du boot. C'est par dessein : ntfsclone est un utilitaire de système de fichiers, et non système. Son unique objectif est de cloner le NTFS, pas de cloner Windows. En somme, ntfsclone peut être employé comme un outil de clonage par blocs de Windows, rapide et absolument sûr, mais il ne suffit pas lui-même à cette tâche.
Si vous voulez régler ce soucis au démarage, alors jettez un oeil SVP à http://winhlp.com/?q=node/66, ou au mini-howto Forking an XP-installation. Un programme nommé relocntfs qui est réputé régler la question du boot est situé dans la section "contrib".

Une autre méthode est d'utiliser GAG (graphical boot manager) après ntfsclone :

  1. Restaurez votre image dans la nouvelle partition
  2. Téléchargez System Rescue CD à www.sysresccd.org et gravez l'image sur un CD-ROM
  3. Démarrez l'ordinateur sur votre CD System Rescue ; Au prompt, tapez gag ou [F2]
  4. Installez GAG sur votre disque dur après avoir sélectionné une iconne & un petit nom, démarrez Windows, et réglez le timer sur 0 si vous ne voulez pas voir GAG au démarrage.

Exemples concrets

Clonage partition NTFS (sauvegarde et restauration Windows XP, Vista, Seven et 8.x)a

Si le disque ou SSD de destination est plus petit que le disque source, suffit de faire un ntfsresize avant (exemple en liens). Alors avec ntfsclone-2.0.0 :

  • Test la taille finale et que le système de fichier est clean :
    # ntfsresize --info /dev/sdd1 Space in use : 7743 MB (9.7%) ... Collecting resizing constraints ... You might resize at 7742312448 bytes or 7743 MB (freeing 72273 MB)
    L'image non-compressée créée avec ntfsclone sera un poil plus grande (2%)
  • Sauvegarde :
    # ntfsclone --save-image --overwrite /chemin/vers/image-wiwi.ntfsclone /dev/sdX
    Où "--overwrite (-O)" = "--output (-o)", mais écrase si fichier déja présent.
  • Restauration :
    # ntfsclone --restore-image --overwrite /dev/sdX /chemin/vers/image-wiwi.ntfscone
    Lancer chkdsk au redémarrage de Windows: # ntfsfix /dev/sdX

Sauvegarde et redimensionnement des partitions NTFS d'un PC portable équipé de Windows

Edgar, consultant à Cologne & Bonn en Allemagne, achète un portable Dell avec la dernière version de Windows qu'il veut utiliser pour des tests, mais il souhaite aussi installer sa distro Linux préférée.
Le disque dur SATA ést partitionné en 3 (dont une mini partition de 75 Mo) et aucun CDRom Windows n'est livré avec le PCéconomie à 20 centimes pour le constructeur ???... Idée !. Edgar a donc défragmenté Windows, puis rebooté sur Knoppix DVD pour :

  • Sauvegarder la partition Windows principale sur un PC au travers du réseau de son entreprise (voir ci-dessous).
  • Redimensionner cette partition de 75Go à 10 Go,
  • et créer 3 partitions étendues afin d'y installer ce qu'il souhaite.

Pas eu besoin d'utiliser la sauvegarde de Windows, le redimensionnement n'ayant entrainé aucun soucis.
Après avoir réalisé celà, il s'est apperçu --un peu tard-- qu'il aurait pu sauver la partition de restauration Dell, et créer simplement les partitions dont il avait besoin...

Pour ma part j'ai utilisé ntfsclone pour sauvegarder, partionner et restaurer des partitions Windows XP Pro, XP Pro 64-bit et Windows 8.1 UEFI sur une demi-douzaine de PCs différents.
Remarque : la fragmentation de la MFT peut, exceptionnellement, empêcher le redimensionnement si on ne parvient pas à la déplacer. Pour m'en sortir j'ai du utiliser le logiciel commercial PerfecttDisk --et me suis fais engueulé par un dév' du projet ntfs-tools, car je les ai contactés trop tard pour procéder à des tests sur cette fichue MFT scotchée à la fin de la partition Windows !

  • Cloner une partition NTFS de /dev/sda1 sur /dev/hdc1 :
    ntfsclone --overwrite /dev/hdc1 /dev/sda1
  • Sauver une partition NTFS dans un fichier au format spécial :
    ntfsclone --save-image --output backup.img /dev/sda1
  • Sauver une partoche NTFS dans un fichier image compressé : :
    ntfsclone --save-image -o - /dev/sda1 | gzip -c > backup.img.gz
  • Sauver un volume NTFS vers un hôte distant, avec ssh (Note : ssh peut vous demander un mot de passe, ça dépend de la config locale) :
    ntfsclone --save-image --output - /dev/sda1 | \\
    gzip -c | ssh host ’cat > backup.img.gz’
  • Sauvegarde de partition NTFS vers une partition Samba :
    Attention, une partition Samba a une limite de taille de fichier de 2 Go par défaut... On utilisera à nouveau split (onglet "Trucs") :
    ntfsclone -s -o - /dev/sda1 | gzip | split -b 1000m - /tmp/server/master-sda1.img.gz_
    Ou bien utiliser l'option lfs pour dépasser la limite des 2Go (ce qui ne change rien à la limite à 4Go de FAT):
    mount -t smbfs -o lfs,username=blahblah...
L'image de la partition NTFS peut être montée

Si on utilise pas le format d'image spécial, l'image est une copie exacte de la partition NTFS originale, secteur par secteur. Du coup :
mount -t ntfs -o loop ntfsclone.img /mnt/ntfsclone

monte l'image sans soucis. Pof !

Restaurer une image disque réalisée avec ntfsclone

  • Restaurer la partition NTFS depuis le fichier image spécial vers sa partition originale :
    ntfsclone --restore-image --overwrite /dev/sda[N] backup.img
  • Restaurer le volume NTFS depuis l'image compressée : :
    gunzip -c backup.img.gz | \\
    ntfsclone --restore-image --overwrite /dev/sda[N] -
  • Restaurer un volume NTFS depuis un hôte distant via ssh (même remarque sur le mot de passe) :
    ssh host ’cat backup.img.gz’ | gunzip -c | \\ ntfsclone --restore-image --overwrite /dev/sda[N] -
    Variante en partant depuis l'hôte (intéressant si plus puissant que le PC où restaurer !) :
    cat backup.img.gz | gunzip -c | \\
    ssh host 'ntfsclone --restore-image --overwrite /dev/sda[N] -'

    Exemple : restauration de la partition NTFS sda1 sur mon portable Dell L400 depuis un PC desktop :
    # cat DellL400-sda1-5GB-winXP-ntfs_backup-img.gz | gunzip -c | \\
    ssh root@dell 'ntfsclone --restore-image --overwrite /dev/sda1 -' root@delll400's password: xxxxxxx Ntfsclone image version: 10.0 Cluster size : 4096 bytes Image volume size : 4999995392 bytes (5000 MB) Image device size : 5000937984 bytes Space in use : 2058 MB (41.1%) Offset to image data : 56 (0x38) bytes Restoring NTFS from image ... ntfsclone v2.0.0 (libntfs 10:0:0) 26.94 percent completed

    ntfsfix /dev/sd[N] # Provoque chkdsk au redémarrage de Windows ; y-a bon, recommandé ;)

Restaurer une image NTFS sur une partition plus petite que la partition sauvegardée

Exemple avec la 1ère partition du 1er disque Sata.

  1. Décompresser l'image pour obtenir un fichier 'img' standard :
    # gunzip -c image_winxp.img.gz | ntfsclone --restore-image --overwrite image_winxp.img -
  2. Redimensionner le volume :
    * Vérifier jusqu'à quelle taille l'image est redimensionnable (ça dépend de l'occupation de la partition clonée, plus qlqs centaines de méga, Windows ayant besoin d'espace libre pour booter) :
    # ntfsresize -i image_winxp.img (-i pour --info)
    * Tester le redimensionnement a la taille NNNN Mo :
    # ntfsresize -n -s [NNNN]M image_winxp.img (-n = --no-action)
    * Redimensionner a la taille NNNN Mo :
    # ntfsresize -v -s [NNNN]M image_winxp.img
  3. Restaurer l'image sur la partition pour Windows :
    # ntfsclone --overwrite /dev/sda1 image_winxp.img
    Au 1er redémarrage, Windows lancera une vérification du système de fichiers sur la partition restaurée.

Ces cas de figures sont tirés et traduits de la documentation sur le wiki de ntfsprogs

Liens ntfsclone

linux-ntfs.org est deviendu une bouate commerciale ; les programmes sont désormais inclus avec ntfs-3g.
http://wiki.linux-ntfs.org/ n'est plus :(

Récupérer les données

Vous comptiez bien la faire cette sauvegarde, seulement le disque est tombé en rade trop top, ou votre chat a sauté sur le clavier et appuyé la touche <SUPPR> alors que vous aviez sélectionné un dossier méga important et imperdable ! La situation est critique, mais peut-être pas désespérée. En tous cas ne massacrez pas le chat, il pouvait pas savoir...

Un fichier supprimé sous Linux (FS ext2/3) est définitivement supprimé. Une sauvegarde est infiniment plus sûre que Dieu et tous les outils ci-dessous réunis.

Outils pouvant récupérer des partitions supprimées ou abîmées

  • LiveCDs permettant de récupérer des partitions foirées : PartedMagic et SystemRescueCD, UBCD...

  • TestDisk, outil de récupération de donnéesTestDisk : outil de récupération de partitions (perdues ou corrompues) open source. et/ou restaurer le secteur de boot (MBR et EBR) lorsqu'endommagé. Puissant, à utiliser avec attention ':-]
  • BootIt™ Next Generation Boot Manager and Partitioning Tool : Un outil propriétaire avec période d'essai, qui a permi à un utilisateur de récupérer entièrement les données d'une partition NTFS endommagée par un mauvais partitionnement réalisée avec QTParted. Et peut-^etre aussi à cet autre user avec sa partoche NTFS endommagée sous Windows (lors d'une copie de partitions entre 2 partoches, pop-up "$MFT..." et reboot automatique !) En bootant sur un liveCD il a eu un peu plus d'infos : "NTFS is inconsistent" et "faites un chkdsk /f sur windows". En bootant sur un CD Windows ce dernier lui écrit "partition est de type Inconnu." LoL
    Le 1er user infortuné a alors téléchargé Bootitng, l'a installé sur une disquette et a booté sa machine dessus.
    Après avoir supprimé puis "undelete" la (mauvaise) partition, il l'a récupérée entièrement, aussi bien depuis son Wiwi que depuis Linux. Note : à mon avis, la m^eme opération réalisée depuis cfdisk aurait aussi bien marché --mais je n'ai testé ni l'un ni l'autre dans ce cas de figure là. Source sur hardware.fr.
    Bref je poste l'info vers ce logiciel payant au vu de ses nombreuses fonctionnalités annoncées pour les admins de machines Wiwi (9x/Me/NT/2000/XP/2003/Vista/2008/Win7/Servers, 32/64-bit). Ex : IEEE1394/USB 2.0 high-speed support for imaging/partitioning, Support for large hard drives (2 TB) and partitions, Non-destructive resizing for NTFS and conversion for FAT/FAT32, # Creation and (secure) deletion of partitions/volumes, Undelete partitions/volumes, Copying and moving of partitions/volumes, Support for Linux Ext2/Ext3 and ReiserFS file systems, Imaging (including directly to CD-R/RW or DVD+R/+RW/-R/-RW), Boot any partition on any hard drive (via BIOS).

Outils pouvant récupérer des données supprimées ou abîmées

  • TestDisk, outil de récupération de donnéesTestDisk Data Recovery : TestDisk est un puissant logiciel de récupération de données. Sur partitions FAT, NTFS, ext[2-4].
  • www.howtoforge.com/data_recovery_with_testdisk.
  • Recovering lost ext2 Linux filesystems : Steve de Unixwiz.net détaille comment ils ont réussi à récupérer complètement les données sur un disque IBM tombé en rade. Les informations, conseil et outils détaillés intéresseront tout utilisateur prévoyant, ainsi que la durée prise par la récupération faute de l'avoir prévue : 2 semaines... Cher très cher le Ko
  • Nouveaux utilitaires Recovering Lost Data On Linux Or Unix Using The Coroner's Toolkit (TCT) avec les outils unrm et lazarus. Et la seconde partie nommée Using TCT To Recover Lost Data On Linux Or Unix - Part Two : espace disque et acoutumés à la console only !
  • Linux Data Recovery Softwares : De Quick Recovery for Linux à Acronis True Image Server for Linux en passant par ReiserFS Recovery Software, Qarchive liste les quelques utilitaires sensés pouvoir récupérer vos données supprimées ou situées sur un disque ayant (presque) rendu l'âme. Leur prix peut vous paraître cher, mais que sont 100€ comparé à des centaines d'heures de travail ? Un survol au-dessus de chaque utilitaire sur la page affiche les retours d'utilisateurs...
    Voir aussi R-Linux de r-tools technology qui fonctionne uniquement sous Windows et peut au miminum réaliser une copie complète de votre disque (fichiers images de la totalité ou une partie d'un disque dur ou d'une partition) pouvant être traitée comme un disque standard. Attention : programme maintenu ??
  • LiveCDs pour la récupération de données : PartedMagic et SystemRescueCD, UBCD...

Sources & liens

Cet article n'existerait pas sans les pages suivantes. Merci à leurs auteurs d'avoir mis en forme et partagé leur expérience :D

Trop cool pour Internet Explorer