从学生时代开始,我就有很多硬盘。 我会不时地升级它们-我卖掉了旧的,而是放了一些更大的。 然后,对体积的需求非常大,所有东西都必须用自己的螺丝存放。 但是,互联网已经到了时机,局域网已经消失了。 一段时间以来,磁盘被用作种子的文件清理器。 但是由于数量不足,升级的需求逐渐消失了。 最后,我得到了一堆相当老的硬盘,这些硬盘开始逐渐消失。 他们还不是尸体,但是他们已经用烂块掩盖了自己并向坟墓爬去。 自然地,在出现不良的最初迹象时,或多或少有价值的一切都转移到了新的螺丝上,而旧的...
于是出现了问题,但是旧的怎么办? 不知何故,当只有12个坏处时,丢掉一个4TB的螺丝很可惜。 而且,在大多数情况下,它们的数量并不会快速增长,并且这种4TB螺钉可以在相当长的一段时间内用于任何废话。 出现了问题,但是如何确保数据不会丢失。 大多数公用事业都试图恢复这些领域。 但是,如此庞大的数量会产生一个问题-为什么呢? 此过程非常漫长,并且4TB磁盘上的±GB字节没有特殊作用。 尤其是当有几只这样的活死人积累时。 一个小小的谷歌,一种快速标记坏处的方法,出现在论坛上人们正在寻找类似内容的多个分支机构中。 但是我没有找到正常的解决方案。
如果没有解决方案,那么它将是。 经过一番思考,我决定采取最简单的方法-编写一个控制台实用程序,该实用程序将螺丝钉插入文件中,然后检查这些文件以进行读取。 读取文件? 好吧,文件下的扇区是完整的,文件已删除。 不可读? 因此,我们找到了错误的块,将文件留在了这个错误的块上,因此没有其他内容写入其中。
这种方法的缺点-它不检查现有文件下的空间,仅检查可用磁盘空间。 好处-快速并且可以“部分”完成。
共有2种模式,完全模式和清洁模式。
完全模式会用文件阻塞磁盘,然后将其检查并删除。 为此,请指定驱动器和所需的块/文件大小。
BadBlocksPlaceholder [disk] [file_size_kb] BadBlocksPlaceholder e:\ 4096
在BadBlockPlaceholders \ yyyymmdd文件夹中创建文件
第二种模式旨在继续检查/清洁。 阻塞4TB文件并检查它们是否可读取也不是一个即时过程,有时您必须将其分成几天。 在这种模式下,您需要指定包含在第一阶段中创建的占位符文件的文件夹。
BadBlocksPlaceholder clean e:\BadBlockPlaceholders\20190110
自然,清洁后,将BadBlockPlaceholders放在螺钉上。 我希望有人派上用场。 仅对欢乐时节脚本进行了测试,因此请不要害怕,也不要踢太多。 用.net core / C#编写。
来源在
github上 。