Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/03/2018, à 20:25

patat-art

comprendre un peu mieux dd

Bonjour !

J'ai une petite question concernant la commande dd : Il y a 3 mois, j'ai cloné un disque dur d'1 To, sans option hormis if=/dev/sda et of=/dev/sdb, ce qui a pris 14h30.
Et je viens de cloner le même disque source vers le même disque cible, avec les otions suivantes:

 dd if=/dev/sda of=/dev/sdb bs=81b count=<équivalent à 800 Go au lieu d'1 To>

Apriori, on pourrait se dire qu'avec 200 Go de moins à lire et copier, et un bs plus élevé, ça devrait aller plus vite. Et ça a pris pas loin de 21h.

Comment ça se fait ? Aurais-je mal compris l'interet de ces options ?

Dernière modification par patat-art (Le 10/03/2018, à 20:27)

Hors ligne

#2 Le 10/03/2018, à 20:40

Nasman

Re : comprendre un peu mieux dd

Je pense que c'est le 81b qui correspond à 81*512 octets qui ne correspond pas à grand chose.
Essaie avec bs=4096


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#3 Le 10/03/2018, à 22:07

MicP

Re : comprendre un peu mieux dd

Bonsoir

… c'est le 81b qui correspond à 81*512 octets …

C'est pire que ça : bs=81b <=> 81 octets

Par défaut, si on ne spécifie rien, c'est 512 octets.

La valeur optimale est obtenue par des essais successifs,
bs=4M (4Mio) me semble être un bon compromis.

=======
Et bien sûr, surtout surtout surtout surtout surtout surtout surtout
relire plusieurs fois la ligne de commande avant d'appuyer sur la touche Entrée
pour être sûr et certain de ne pas s'être trompé de cible (of=…)
sinon, on risquerait d'écraser irrémédiablement les données d'un autre disque.

=======
N'oublie pas que même si le prompt revient à la fin d'exécution de la commande,
cela ne veut pas toujours dire que les tampons d'entrée/sortie on tous été écrits sur le disque.

C'est pourquoi je recommande, surtout pour une aussi grosse quantité de données,
d'utiliser juste après la commande sync pour vider ces tampons
et donc de s'assurer que tout a bien été transféré.

dd if=/dev/sda of=/dev/sdb bs=4M && sync

Pas la peine de spécifier le paramètre count=
car si tu compte copier l'intégralité du disque,
la commande s'arrêtera dès qu'elle n'aura plus rien à lire.

=======
Pour que la copie puisse être plus rapidement faîte,
il vaut mieux connecter les disques source et cible
sur les ports SATA d'une machine plutôt que par USB

Dernière modification par MicP (Le 10/03/2018, à 23:48)

Hors ligne

#4 Le 10/03/2018, à 22:25

pingouinux

Re : comprendre un peu mieux dd

Bonsoir,

MicP #3 a écrit :

C'est pire que ça : bs=81b <=> 81 octets

Non, c'est bien 81*512, comme indiqué par Nasman en #2.
Voici un extrait de man dd

N and BYTES may be followed by the following multiplicative suffixes: c
       =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
       GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

Hors ligne

#5 Le 10/03/2018, à 23:48

MicP

Re : comprendre un peu mieux dd

Tu as raison, je corrige donc mon précédent message.

Je suis allé un peu trop vite, et je m'étais arrêté à ces lignes de la page man

man dd a écrit :
…
       bs=OCTETS
              lire et écrire jusqu'à OCTETS octets à la fois
…

Il fallait que je lise aussi plus loin.

Dernière modification par MicP (Le 10/03/2018, à 23:48)

Hors ligne