Copie d'un disque dur sur un autre

Bonjour à tous,

Pour noël j’ai acheté un disque SSD à mon PC portable :smiley:

J’aimerais pouvoir copier le contenu de mon disque actuel sur le nouveau afin de ne pas avoir besoin de tous réinstaller.

J’ai un peu cherché sur le net et je suis tombé sur la commande “dd” qui semble correspondre a ce que je veux faire.
Mais ce que je veux faire est assez complexe et la commande dd semble assez dangeureuse puisque mal utilisée elle peux me faire perdre mes données.

Je préfère donc expliquer ici clairement ce que je voudrais faire pour que vous puissiez m’aider un peu.

Voici mon disque actuel :

[code]# fdisk -l

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdf7770e7

Device Boot Start End Blocks Id System
/dev/sda1 2048 821247 409600 27 Hidden NTFS WinRE
/dev/sda2 821248 123700499 61439626 7 HPFS/NTFS/exFAT
/dev/sda3 123701246 1250263039 563280897 5 Extended
/dev/sda5 * 123701248 143230975 9764864 83 Linux
/dev/sda6 143233024 162762751 9764864 83 Linux
/dev/sda7 162764800 1054949375 446092288 83 Linux
/dev/sda8 1054951424 1242449919 93749248 83 Linux
/dev/sda9 1242451968 1250263039 3905536 82 Linux swap / Solaris[/code]

C’est un disque de 640Go. sda1 et sda2 sont des partitions pour win7. sda5 et sda6 sont deux partitions / de deux distribution linux. sda7 et sda8 sont deux partitions /home. sda9 étant le swap.

Mon nouveau disque fera 128Go mais tous le contenu de l’ancien devrait tenir dessus car j’ai beaucoup d’espace libre.

J’aimerais donc pourvoir recréer mes partitions (en plus petit pour certaines) sur mon nouveau disque et surtout j’aimerais pouvoir y copier le contenu de mes partitions actuelles afin de ne pas avoir a tout réinstaller.

Une piste peut-être:
wiki.mandriva.com/fr/Copie_par_b … lus_petite
en refaisant tes partoches avant…
attention à ne pas te tromper, if c’est input, entrée… of c’est output, sortie… ne suit pas la commande comme indiquée… toi ce serait du style:

# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerrorsi ton disque SSD est vu en sdb…
Le refaire pour chaque partoche (à part la swap et “l’extended”…)… mais je ne suis pas sûr que ce soit la bonne solution…

:006

Salut,

Je chercherais plutôt du côté de : isalo.org/wiki.debian-fr/ind … st%C3%A8me

slt,
créer les partition manuellement puis rsync
déjà testé ça marche super bien (penser à éliminer les répertoire /dev /proc de la copie )

dd effectue une copie brute bloc par bloc et non fichier par fichier. Il ne convient donc pas pour transférer des données d’un disque ou d’une partition vers un disque ou une partition plus petit(e) : la copie va être tronquée. Or l’espace libre ne se trouve pas forcément à la fin.

[quote=“dchost99”]slt,
créer les partition manuellement puis rsync
déjà testé ça marche super bien (penser à éliminer les répertoire /dev /proc de la copie )[/quote]

Inclure ces répertoires dans un fichier “exclure” dans ce cas, voir le lien proposé par Ggoodluck47

@Pascal : Qu’elle est donc l’utilité première de dd? Créer surtout un fichier image de tout ou partie d’une partition?

dd est une commande unix permettant de copier un fichier en effectuant des conversions, en ne sélectionnant qu’une partie de données à copier. Il est particulièrement adapté à la copie sur des périphériques blocs tel que des disques durs ou des lecteurs CD-ROM.

Tu dois transférer sda1 sur sdb1, tu fais

[code]# mount /dev/sda1 /mnt

mkdir -p /tmp/dsk2

mount /dev/sdb1 /tmp/dsk2

cp -a /mnt/* /tmp/dsk2

ou encore

(cd /tmp ; tar c .) | (cd /tmp/dsk2 ; tar x)

[/code]
Pas de dd sur un disque SSD, tu perdras les informations et l’optimisation TRIM, ton disque sera plus lent à l’écriture pendant un bon laps de temps. rsync marche tout autant.

Il est possible de brancher deux disques sur un pc portable?

Et, le transfert de sda1 vers sdb1 est suffisant pour avoir un système boutable quand le “sdb1” sera branché seul sur la machine?

Merci pour toutes vos réponses, mais si je suis ce que vous dites et que je copie mes partitions sur mon nouveau disque. Mon disque ne bootera jamais en effet, rsync ne peux copier le bootloader!?!?

Salut,

peut-être une piste avec clonezilla
On peut faire une copie disque à disque avec une option pour un resize de la table de partition si les deux disques sont de tailles différentes.

Par exemple. Ou d’un disque entier, d’un CD ou DVD de données, d’une clé USB… Ou dans l’autre sens, écrire une image sur un disque. Mais ce n’est qu’une utilisation parmi toutes les possibilités.

Il devrait suffire de faire un “batch discard” avec la commande fstrim pour réactualiser les données TRIM après la copie de l’image (source : http://fr.wikipedia.org/wiki/TRIM)

Oui, soit en interne si le PC dispose de deux baies de disques, soit en externe en USB ou eSATA.

Le transfert fichier par fichier avec rsync ou cp -a ne suffira pas car cela ne réinstalle par le chargeur d’amorçage. Il faut donc penser à l’installer sur le second disque après la copie. En revanche la copie brute de disque à disque avec dd copie tout, y compris le chargeur d’amorçage.

Tu crées les partitions avec la taille qui te convient avec un live CD ou encore mieux
avec le cd/clef usb d’install debian (en faisant une install minimaliste).
Dans la foulée tu copies les fichiers dans les bonnes partitions nouvellement crées
avec rsync (avec les options -aHx --numeric-ids)
Ensuite pour pouvoir booter, tu utilises le mode “options avancées” du cd/clef usb
d’install debian pour réparer puis installer grub

Je trouve que dans ton cas dd ou clonezilla n’est pas très adapté …

C’est nouveau ça, je ne connaissais pas. Mais ça n’est pas très clair: le man dit[quote]
«fstrim est utilisé sur un système de fichier monté pour abandonner (ou « rogner ») les blocs qui ne sont pas utilisés par le système de fichier»[/quote]d’un autre coté, wikipedia semble dire que ça exécute les commandes d’un seul coup. Je verrais bien l’option --trim-sector-ranges de hdparm mais ça a l’air assez dangereux…

[quote=“fran.b”]# cp -a /mnt/* /tmp/dsk2
[/quote]

Attention, le caractère * exclut les fichiers et dossiers commençant par un point.

S’il y en a, il faut donc faire ensuite

pour avoir une copie complète.

Si tu fais cp -a ., tu auras aussi … et donc tout le système de fichiers ira dessus. Il faut faire dans ce cas cp -a .??, c’est pour cette raison que j’ai mis la variante tar que j’aime bien et qui est rapide.

Au sujet de fstrim,

Moi non plus. Une petite recherche en réaction à ta réponse, ayant pensé “ce serait dommage qu’une telle fonctionnalité n’existe pas” m’a fait tomber dessus.

[quote=“fran.b”]Mais ça n’est pas très clair: le man dit
«fstrim est utilisé sur un système de fichier monté pour abandonner (ou « rogner ») les blocs qui ne sont pas utilisés par le système de fichier»[/quote]
La page de manuel originale en anglais m’a paru claire. Je pense que la traduction de “discard” et “trim” dans la version française n’est pas très heureuse.

une fois le système copié entièrement
un chroot puis réinstalle grub

mount -o bind /dev /mnt/debian/dev
mount -t proc /proc /mnt/debian/proc
chroot /mnt/debian/

grub-install /dev/hdX

(/mnt/debian = exemple du nouveau emplacement du système)

:017 fstrim
je viens de le découvrir …
:033