Depuis mes jours d'étudiant, j'avais un tas de disques durs. De temps en temps, je les améliorais - je vendais les anciens, mais à la place, je les mettais plus volumineux. Ensuite, la demande de volume était assez importante, tout devait être stocké sur ses propres vis. Mais le moment est venu pour Internet et les réseaux locaux ont disparu d'eux-mêmes. Pendant un certain temps, les disques ont été utilisés comme nettoyeur de fichiers pour les torrents. Mais la nécessité d'une mise à niveau due au manque de volume a progressivement disparu. En fin de compte, je me suis retrouvé avec un tas de vieux disques durs qui ont commencé à mourir progressivement. Ce ne sont pas encore des cadavres, mais ils se sont déjà couverts de mauvais blocs et ont rampé vers la tombe. Naturellement, aux premiers signes de maux, tout ce qui était plus ou moins précieux a été transféré sur une nouvelle vis, et l'ancienne ...
La question s'est donc posée, mais que faire de l'ancien? D'une certaine manière, il est dommage de jeter une vis de 4 To alors qu'il n'y a qu'une douzaine de problèmes dessus. De plus, dans la plupart des cas, leur nombre n'augmente pas rapidement, et cette vis de 4 To peut être utilisée pour n'importe quel non-sens pendant un certain temps. La question s'est posée, mais comment s'assurer que les données ne tombent pas sur les maux. La plupart des services publics tentent de récupérer ces secteurs. Mais avec un tel volume, la question se pose - pourquoi? Ce processus est très long et ± gigaoctets sur un disque de 4 To ne jouent pas de rôle spécial. Surtout lorsque plusieurs de ces morts-vivants se sont accumulés. Un petit google, un moyen de marquer rapidement les défauts est apparu sur plusieurs branches sur des forums où les gens recherchaient quelque chose de similaire. Mais je n'ai pas trouvé de solution normale.
S'il n'y a pas de solution, elle le fera. Après avoir réfléchi un peu, j'ai décidé de faire le moyen le plus simple: écrire un utilitaire de console qui branche une vis avec des fichiers, puis vérifie la lecture de ces fichiers. Lire le dossier? Eh bien, le secteur sous le fichier est entier, le fichier est supprimé. Pas lisible? Nous avons donc trouvé le mauvais bloc, nous laissons le fichier sur ce mauvais afin que rien d'autre n'y soit écrit.
Parmi les inconvénients de cette approche - il ne vérifie pas l'espace sous les fichiers existants, seulement l'espace disque libre. Des avantages - rapidement et peut être fait en «portions».
Au total, il existe 2 modes, le mode complet et le mode de nettoyage.
Le mode complet obstrue le disque avec des fichiers, puis ils sont vérifiés et supprimés. Pour ce faire, spécifiez le lecteur et la taille de bloc / fichier souhaitée.
BadBlocksPlaceholder [disk] [file_size_kb] BadBlocksPlaceholder e:\ 4096
Les fichiers sont créés dans le dossier BadBlockPlaceholders \ yyyymmdd
Le deuxième mode est conçu pour continuer la vérification / le nettoyage. Le colmatage des fichiers de 4 To et la vérification de leur lecture ne sont pas non plus un processus instantané, et parfois vous devez le diviser en quelques jours. Dans ce mode, vous devez spécifier le dossier avec les fichiers d'espace réservé créés à la première étape.
BadBlocksPlaceholder clean e:\BadBlockPlaceholders\20190110
Naturellement, après le nettoyage, laissez BadBlockPlaceholders couché sur la vis. J'espère que quelqu'un vous sera utile. Seul le script happy-day a été testé, alors n'ayez pas peur et ne donnez pas grand-chose. Écrit en .net core / C #.
Les sources sont sur
github .