Effacement du disque dur portable avec DD sous Linux [dupliquer]

1

Cette question a déjà une réponse ici:

J'ai 3 disques durs portables, l'un est de 160 Go, les deux autres sont de 500 Go. Je veux leur écrire des zéros en utilisant Linux et dd. J'ai trouvé cette commande:

dd if=/dev/zero of=/dev/sda bs=?

Comment pour la taille de bloc, quelle est la taille de bloc idéale pour mes 3 disques durs portables? (Remarque: j'ai placé le ?à la fin de la commande.)

Charles Whitfield
la source

Réponses:

1

Pour la bs=valeur, je recommanderais un réglage 1024comme ceci:

dd if=/dev/zero of=/dev/sda bs=1024

Mais si vous êtes paranoïaque à propos de la récupération de données et que vous voulez faire quelque chose de «plus fort» que d'écrire des zéros, vous pouvez utiliser /dev/urandomce qui suit:

dd if=/dev/urandom of=/dev/sda bs=1024

Une autre façon d’effacer un lecteur.

Mais personnellement, je n'aime pas utiliser ddce genre de tâche. Au lieu de cela, j'utilise une variante légère dans laquelle je formate le lecteur (et le repartitionnement s'il doit être repartitionné), puis j'exécute la commande suivante. Notez que même si certains pourraient considérer cette méthode comme étant supposément «inefficace», vous devez être extrêmement méfiant vis-à-vis du fonctionnement des partitions et des systèmes de fichiers pour croire que cette méthode n'est pas une méthode alternative viable:

cat /dev/zero >> /path/to/mounted/drive/junk_file &

Ou cette variante utilisant le /dev/urandompériphérique comme expliqué ci-dessus ddexemple:

cat /dev/urandom >> /path/to/mounted/drive/junk_file &

Il suffit de changer /path/to/mounted/drive/le chemin réel du lecteur monté. Cela crée un fichier appelé junk_filesur le système de fichiers et le fait en tâche de fond avec l' &ajout à la fin.

La bonne chose à propos d’une opération comme celle-ci est que vous pouvez l’arrêter et la reprendre plus tard. Ce qui signifie que c'est juste un fichier rempli de zéros ou d'urandom indésirable. Supposons donc que vous deviez éteindre la machine ou déconnecter le lecteur. Faites juste ça. Et puis exécutez à nouveau cette même commande et laissez-la continuer là où elle a commencé. Ceci est utile lorsque vous effacez des données sur des disques très volumineux pouvant prendre des heures.

Pour plus de détails sur ces méthodes de suppression de périphérique / fichier, et sur d’autres -, consultez cette page sur ArchWiki . Les astuces sont utiles pour pratiquement tous les systèmes Linux / Unix, même Mac OS X, et pas seulement ArchLinux.

Vitesse de l’opération d’effacement des données.

Pour ce qui est de la vitesse, la vitesse globale de ce type d'opération peut être estimée en fonction du temps qu'il faudrait à votre système pour copier un fichier de 160 Go ou de 500 Go sur le même lecteur. Depuis, écrire un fichier comme celui-ci est en réalité l'équivalent en données de «copier» un fichier; dans ce cas, un fichier est en cours de création.

FWIW /dev/urandomprendra plus de temps que /dev/zeroprévu - car il /dev/urandomgénère en fait des données aléatoires -, gardez cela à l’esprit si le temps joue un rôle important.

JakeGould
la source
Combien de temps cela prendrait-il sur mon lecteur de 160 Go?
Charles Whitfield
Si vous avez l'USB 2.0, la vitesse d'écriture sera d'environ 25-30 Mo / s. Cela vous donne environ 100 minutes pour le lecteur de 160 Go et environ 5,5 heures pour chacun des disques de 500 Go. En bout de ligne: l'USB 2.0 craint, l'USB 3.0 bascule.
alesc
@alesc - Merci mon brave homme. J'utilise l'USB 2.0, mais ça ne me dérange pas combien de temps il est lent.
Charles Whitfield
@CharlesWhitfield Bon point. Tout dépend de la vitesse du lecteur, de la vitesse de connexion et de tous les facteurs typiques de vitesse de copie. J'ai mis à jour ma réponse pour expliquer cela, ainsi que pour vous montrer une autre façon de nettoyer le contenu si le temps le permet et que vous souhaitez arrêter / reprendre le processus ultérieurement.
JakeGould
1
512 octets est extrêmement lent. Vous allez encourir des frais généraux énormes. Optez pour au moins bs=1Mou vous allez tourner vos pouces pendant des années. Pour ce qui est de recommander de collecter des données à partir de /dev/random, c’est une idée terrible ; /dev/randomest pour les clés de chiffrement à long terme et similaires, pas pour les données en vrac! . Si vous voulez beaucoup de données aléatoires, vous devez les utiliser /dev/urandom.
CBHacking
0

J'ai écrit ceci comme un commentaire , mais je vais le mettre comme une réponse aussi pour la visibilité.

Pour la ddtaille de bloc, vous voulez un tampon suffisamment grand pour que le programme ne se contente pas d'émettre constamment des appels système pour des quantités triviales d'E / S. Ayant copié beaucoup de disques en utilisant dd, je recommande au moins bs=1M, ou même quelque chose comme16M . Si la taille de votre disque n'est pas un multiple exact de la taille de votre bloc, vous laisserez un petit peu de données non écrasées à la fin. c'est une valeur sûre, il n'y a rien du tout, mais si vous voulez être paranoïaque, vous pouvez obtenir manuellement ce dernier bit.

L'utilisation d'une petite taille de bloc (avec /dev/zeroou d'une autre source) vous ralentira, mais ce n'est rien comparé au ralentissement résultant de l'utilisation d'une source de données bloquante /dev/random, comme le suggère la réponse acceptée au moment de la rédaction. Le but de /dev/randomest de générer des données d' entropie maximale , et non de générer beaucoup de données. Ce n'est pas simplement que c'est lent, mais ça tire d'un pool d'entropie de taille limitée, et le pool ne se remplit pas très rapidement (surtout si vous ne faites rien d'autre avec le système).

Lorsque le pool est épuisé, la lecture de /dev/randombloquera, refusant de fournir d'autres données jusqu'à ce que le pool se remplisse. Vous utilisez /dev/randompour des choses comme les clés cryptographiques à long terme, pas pour les données en vrac. Essayer de tirer un demi-téraoctet /dev/randomest une idée absolument terrible. Si vous voulez beaucoup de données à entropie élevée, vous devez les utiliser à la /dev/urandomplace . Il utilise des générateurs pseudo-aléatoires pour étendre le pool d'entropie à une taille arbitraire, abandonnant un peu d'entropie en échange de la garantie qu'une lecture continue aboutira dans un délai raisonnable.

CBHacking
la source
FWIW, j’ai accepté vos commentaires et critiques et ajusté ma réponse en conséquence 7 minutes avant que cette réponse ne soit publiée. De plus, la suggestion d'utiliser une source de données aléatoire est venue de moi, pas de l'affiche originale. Ajoutant juste une perspective à ceci.
JakeGould
@JakeGould: CBHacking aurait pu commencer à travailler sur cette réponse juste après avoir posté le commentaire et ne pas avoir consulté les mises à jour avant de l'avoir publiée. À ce stade, cependant, il n'y a aucune mention de / dev / random sauf ici, donc l'essentiel de cette réponse est tangent à la question. La première partie de la réponse est bien couverte dans la question sur le double (qui n'était pas un double au moment de la publication). (suite)
fixer1234 le
1
(suite) La dernière partie est intéressante et peut-être utile, mais maintenant pas dans un endroit utile car personne ne la trouvera sauf accidentellement. CBHacking, suggestion: posez une nouvelle question sur / dev / random vs. / dev / urandom et répondez vous-même avec la partie pertinente de cette réponse (et supprimez simplement cette réponse à partir d’ici).
fixer1234
1
@ fix1234: OK, pourrait le faire. Oui, désolé, je n'ai pas vu la réponse mise à jour avant de poster.
CBHacking
@ fix1234 Très bonne idée pour expliquer la différence entre /dev/randomet /dev/urandom. Moyen idéal pour se concentrer sur cette question et toucher un public plus large, plus ciblé.
JakeGould