#1 Le 06/04/2019, à 18:14
- antistress
Appliquer une même commande à des variables inscrites dans un fichier?
Bonjour,
J'ai consigné dans ce billet la méthode que j'utilise pour réparer un disque dur NTFS défectueux sous GNU/Linux avec badblocks.
Mais là j'ai le disque dur de mes vieux avec un grand nombre d'erreurs (j'en suis à 277 adresses et l'examen n'est pas fini !) et j'aurais besoin d'une commande pour automatiser la procédure pour m'éviter un travail rébarbatif.
Concrètement la commande
sudo badblocks /dev/sdX1 > /home/mon_home/bad-blocks.txt
me permet de remplir le fichier texte bad-blocks.txt des adresses des secteurs défectueux, par exemple :
100390264
100390265
100390266
100390267
146565556
146565557
...
Comment puis-je ensuite automatiser une écriture successivement sur chacun de ces secteurs ?
C'est à dire qu'actuellement j'écris à la main :
sudo dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek=100390265
sudo dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek=100390266
sudo dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek=100390267
sudo dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek=146565556
sudo dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek=146565557
...
mais je voudrais l'automatiser en une commande...
Merci d'avance !
Dernière modification par antistress (Le 06/04/2019, à 18:18)
Blogue : Libre et ouvert
Hors ligne
#2 Le 06/04/2019, à 18:35
- erresse
Re : Appliquer une même commande à des variables inscrites dans un fichier?
Salut,
Tu pourrais faire la commande suivante :
while read secteur; do sudo dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek="$secteur"; done < /home/mon_home/bad-blocks.tx
À tester, bien sûr, avant d'exécuter en réel...
Dernière modification par erresse (Le 06/04/2019, à 18:38)
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#3 Le 06/04/2019, à 19:13
- Watael
Re : Appliquer une même commande à des variables inscrites dans un fichier?
salut,
$ sudo xargs -I{} dd if=/dev/zero of=/dev/sdX1 bs=1024 count=1 seek={} <badblocks.txt
si xargs ne passe pas les droits à dd, alors faire xargs sudo dd...
Dernière modification par Watael (Le 06/04/2019, à 19:14)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 06/04/2019, à 22:50
- antistress
Re : Appliquer une même commande à des variables inscrites dans un fichier?
Merci à tous deux :
À tester, bien sûr, avant d'exécuter en réel...
comment ?
@Watael : tu proposes qqch de différent de erresse, peux tu me dire pourquoi ? est-ce mieux ?
(je ne m'y connais pas en bash)
Dernière modification par antistress (Le 06/04/2019, à 22:58)
Blogue : Libre et ouvert
Hors ligne
#5 Le 06/04/2019, à 23:32
- Watael
Re : Appliquer une même commande à des variables inscrites dans un fichier?
parce que ce n'est pas du bash !
bash est lent; cette seule commande devrait être plus rapide.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 07/04/2019, à 10:52
- erresse
Re : Appliquer une même commande à des variables inscrites dans un fichier?
La proposition de Watael est certainement préférable à la mienne, il est bien plus calé que moi en bash et autres commandes, tu peux lui faire confiance...
Quand à ma mise en garde, c'est pour s'assurer de ne pas bousiller quelque chose, mais la commande que tu appliques sur un secteur particulier (avec "seek") n'est jamais que l'écriture de zéros binaires sur le support, ça ne représente pas un risque majeur, sauf si tu écrases ce faisant des données importantes sur ton support cible.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#7 Le 21/04/2019, à 00:46
- antistress
Re : Appliquer une même commande à des variables inscrites dans un fichier?
Hello, je voulais donner des nouvelles.
L’exécution de la commande badblocks a pris des jours car le disque était vraiment endommagé avec un paquet de secteurs defectueux.
Le fichier bad-blocks.txt a fini par peser 594,1 Mo (ce qui au passage me parait improbable uniquement avec une succession d'adresses à 9 chiffres)
Là dessus, pour le sport, j'ai passé la commande de Watael qui a marché un temps jusqu'à avoir un message d'erreur du genre disque plein ce que je ne m'explique pas non plus.
Bref, le disque part pour la poubelle !
Dernière modification par antistress (Le 21/04/2019, à 00:46)
Blogue : Libre et ouvert
Hors ligne