У меня есть жесткий диск на 3 ТБ, в котором по данным SMART было 16 поврежденных секторов. Я провел поверхностный тест с HDSentinel, который увеличил это число примерно до 100. Затем я непосредственно скопировал каталоги на работающий жесткий диск объемом 3 ТБ в порядке их важности (используя Robocopy или SynchronizeIt, которые сохраняют все временные метки, включая метки каталогов), что еще больше увеличило число поврежденных секторов до 416. Я думаю, что лучшим способом было бы полностью клонировать его на другой жесткий диск, чтобы спасти как можно больше данных, поскольку каждая попытка чтения поврежденного сектора, кажется, усугубляет проблему, но всегда есть риск из-за полного сбоя жесткого диска до завершения процесса, и некоторые каталоги здесь гораздо важнее других - в любом случае, то, что сделано, сделано, и я успешно восстановил то, что имело значение больше всего.

Во время поверхностного теста HDSentinel предоставил список нечитаемых секторов, с помощью которых я идентифицировал 6 файлов, затронутых поврежденными секторами; Я переместил их в специальную папку и постарался не трогать их - ну, я сказал, пытался, потому что сначала я хотел переместить их с помощью проводника Windows 7, но эта глупость настаивала на их анализе, так как они были выбраны, чтобы отобразить предварительный просмотр, который на некоторое время заморозил систему и добавил в счетчик еще несколько поврежденных секторов, поэтому мне пришлось перенести эти файлы из командной строки ...

Побочный вопрос: как можно в превентивном режиме отключить этот предварительный просмотр?

Теперь у меня есть несколько вариантов работы с этими файлами:

  • Либо попробуйте скопировать их напрямую с помощью Roadkil Unstoppable Copier (который должен пропустить поврежденные сектора и спасти то, что можно спасти).
  • Или запустите ddrescue, чтобы извлечь конкретный диапазон секторов, занятых поврежденными файлами (плюс первые 10 ГБ, чтобы иметь системные файлы, включая MFT, что должно позволить мне извлечь фрагментированные файлы без головной боли - эти поврежденные файлы в основном это были телевизионные трансляции (больше не онлайн), которые были загружены одновременно, и я думаю, именно поэтому они были записаны с чересстрочной разверткой, с тысячами фрагментов каждый, несмотря на то, что на жестком диске много свободного места).

Во втором случае (который, вероятно, является самым безопасным на тот момент), чтобы быть уверенным, что я ничего не пропустил, я хотел бы получить список файлов, имеющих хотя бы один сектор в потенциально поврежденной области. Первым идентифицированным поврежденным сектором был номер 4131708368, последним был 4157865694, поэтому я хочу определить, какие файлы находятся между секторами 4131440000 и 4158400000, чтобы иметь хороший запас прочности.

Прочитав эту ветку, я попробовал два метода:

  • С помощью nfi.exe (принимает значения секторов в качестве входных данных, я поставил шаг 8, чтобы получить только одно значение на кластер 4 КБ)

    FOR /L %N in (4131440000,8,4158400000) DO nfi.exe R: %N >>"G:\nfi ST3000DM001 4131440000-4158400000.txt"
    

Но это не работает, оно отображает отрицательные значения. Кажется, это проблема 32-битного предела для инкрементного вычисления, несмотря на то, что числа меньше 2 ^ 32. Проведя тесты, я обнаружил, что проблема появилась в 2147483648, а это точно 2 ^ 31. Это почему ?

  • С помощью fsutil (требует входные значения кластера, полученные путем деления значений сектора на 8):

    FOR /L %N in (516430000,1,519800000) DO fsutil volume querycluster R: %N >>"G:\fsutil querycluster ST3000DM001 516430000-519800000.txt"
    

Это работает, и презентация более упорядочена, чем при использовании nfi.exe (одна строка на кластер), но мучительно медленная: около 1 секунды на значение, для завершения потребуется 936 часов. Кажется, будет намного быстрее, если значения кластера будут введены в строку в одной строке, но я не знаю, как сделать добавочный подсчет, чтобы добавить все значения в одной строке, не вводя их, и я предполагаю, что бедный маленький cmd.exe захлебнулся бы 3370000 значениями по той же команде ...

Есть ли лучший способ получить то, что я хочу? Похоже ли это на безопасный и надежный подход к решению этой проблемы?

Благодарю.

2 ответа2

0
for /L %N in (1,1,100) do ( fsutil volume querycluster c: %N00 %N01 %N02 %N03 %N04 %N05 %N06 %N07 %N08 %N09 %N10 %N11 %N12 %N13 %N14 %N15 %N16 %N17 %N18 %N19 %N20 %N21 %N22 %N23 %N24 %N25 %N26 %N27 %N28 %N29 %N30 %N31 %N32 %N33 %N34 %N35 %N36 %N37 %N38 %N39 %N40 %N41 %N42 %N43 %N44 %N45 %N46 %N47 %N48 %N49 %N50 %N51 %N52 %N53 %N54 %N55 %N56 %N57 %N58 %N59 %N60 %N61 %N62 %N63 %N64 %N65 %N66 %N67 %N68 %N69 %N70 %N71 %N72 %N73 %N74 %N75 %N76 %N77 %N78 %N79 %N80 %N81 %N82 %N83 %N84 %N85 %N86 %N87 %N88 %N89 %N90 %N91 %N92 %N93 %N94 %N95 %N96 %N97 %N98 %N99 )

Для меня это примерно 5 секунд, улучшение в 19-20 раз.

К сожалению, кажется, что это все еще длится около 50 часов. Интересно, может ли командная строка обрабатывать 1000 одновременно?

Кажется, что это происходит быстрее, делая 1000x за один раз.

for /L %N in (1,1,1000) do fsutil volume querycluster c: %N000 %N001 %N002 %N003 %N004 %N005 %N006 %N007 %N008 %N009 %N010 %N011 %N012 %N013 %N014 %N015 %N016 %N017 %N018 %N019 %N020 %N021 %N022 %N023 %N024 %N025 %N026 %N027 %N028 %N029 %N030 %N031 %N032 %N033 %N034 %N035 %N036 %N037 %N038 %N039 %N040 %N041 %N042 %N043 %N044 %N045 %N046 %N047 %N048 %N049 %N050 %N051 %N052 %N053 %N054 %N055 %N056 %N057 %N058 %N059 %N060 %N061 %N062 %N063 %N064 %N065 %N066 %N067 %N068 %N069 %N070 %N071 %N072 %N073 %N074 %N075 %N076 %N077 %N078 %N079 %N080 %N081 %N082 %N083 %N084 %N085 %N086 %N087 %N088 %N089 %N090 %N091 %N092 %N093 %N094 %N095 %N096 %N097 %N098 %N099 %N100 %N101 %N102 %N103 %N104 %N105 %N106 %N107 %N108 %N109 %N110 %N111 %N112 %N113 %N114 %N115 %N116 %N117 %N118 %N119 %N120 %N121 %N122 %N123 %N124 %N125 %N126 %N127 %N128 %N129 %N130 %N131 %N132 %N133 %N134 %N135 %N136 %N137 %N138 %N139 %N140 %N141 %N142 %N143 %N144 %N145 %N146 %N147 %N148 %N149 %N150 %N151 %N152 %N153 %N154 %N155 %N156 %N157 %N158 %N159 %N160 %N161 %N162 %N163 %N164 %N165 %N166 %N167 %N168 %N169 %N170 %N171 %N172 %N173 %N174 %N175 %N176 %N177 %N178 %N179 %N180 %N181 %N182 %N183 %N184 %N185 %N186 %N187 %N188 %N189 %N190 %N191 %N192 %N193 %N194 %N195 %N196 %N197 %N198 %N199 %N200 %N201 %N202 %N203 %N204 %N205 %N206 %N207 %N208 %N209 %N210 %N211 %N212 %N213 %N214 %N215 %N216 %N217 %N218 %N219 %N220 %N221 %N222 %N223 %N224 %N225 %N226 %N227 %N228 %N229 %N230 %N231 %N232 %N233 %N234 %N235 %N236 %N237 %N238 %N239 %N240 %N241 %N242 %N243 %N244 %N245 %N246 %N247 %N248 %N249 %N250 %N251 %N252 %N253 %N254 %N255 %N256 %N257 %N258 %N259 %N260 %N261 %N262 %N263 %N264 %N265 %N266 %N267 %N268 %N269 %N270 %N271 %N272 %N273 %N274 %N275 %N276 %N277 %N278 %N279 %N280 %N281 %N282 %N283 %N284 %N285 %N286 %N287 %N288 %N289 %N290 %N291 %N292 %N293 %N294 %N295 %N296 %N297 %N298 %N299 %N300 %N301 %N302 %N303 %N304 %N305 %N306 %N307 %N308 %N309 %N310 %N311 %N312 %N313 %N314 %N315 %N316 %N317 %N318 %N319 %N320 %N321 %N322 %N323 %N324 %N325 %N326 %N327 %N328 %N329 %N330 %N331 %N332 %N333 %N334 %N335 %N336 %N337 %N338 %N339 %N340 %N341 %N342 %N343 %N344 %N345 %N346 %N347 %N348 %N349 %N350 %N351 %N352 %N353 %N354 %N355 %N356 %N357 %N358 %N359 %N360 %N361 %N362 %N363 %N364 %N365 %N366 %N367 %N368 %N369 %N370 %N371 %N372 %N373 %N374 %N375 %N376 %N377 %N378 %N379 %N380 %N381 %N382 %N383 %N384 %N385 %N386 %N387 %N388 %N389 %N390 %N391 %N392 %N393 %N394 %N395 %N396 %N397 %N398 %N399 %N400 %N401 %N402 %N403 %N404 %N405 %N406 %N407 %N408 %N409 %N410 %N411 %N412 %N413 %N414 %N415 %N416 %N417 %N418 %N419 %N420 %N421 %N422 %N423 %N424 %N425 %N426 %N427 %N428 %N429 %N430 %N431 %N432 %N433 %N434 %N435 %N436 %N437 %N438 %N439 %N440 %N441 %N442 %N443 %N444 %N445 %N446 %N447 %N448 %N449 %N450 %N451 %N452 %N453 %N454 %N455 %N456 %N457 %N458 %N459 %N460 %N461 %N462 %N463 %N464 %N465 %N466 %N467 %N468 %N469 %N470 %N471 %N472 %N473 %N474 %N475 %N476 %N477 %N478 %N479 %N480 %N481 %N482 %N483 %N484 %N485 %N486 %N487 %N488 %N489 %N490 %N491 %N492 %N493 %N494 %N495 %N496 %N497 %N498 %N499 %N500 %N501 %N502 %N503 %N504 %N505 %N506 %N507 %N508 %N509 %N510 %N511 %N512 %N513 %N514 %N515 %N516 %N517 %N518 %N519 %N520 %N521 %N522 %N523 %N524 %N525 %N526 %N527 %N528 %N529 %N530 %N531 %N532 %N533 %N534 %N535 %N536 %N537 %N538 %N539 %N540 %N541 %N542 %N543 %N544 %N545 %N546 %N547 %N548 %N549 %N550 %N551 %N552 %N553 %N554 %N555 %N556 %N557 %N558 %N559 %N560 %N561 %N562 %N563 %N564 %N565 %N566 %N567 %N568 %N569 %N570 %N571 %N572 %N573 %N574 %N575 %N576 %N577 %N578 %N579 %N580 %N581 %N582 %N583 %N584 %N585 %N586 %N587 %N588 %N589 %N590 %N591 %N592 %N593 %N594 %N595 %N596 %N597 %N598 %N599 %N600 %N601 %N602 %N603 %N604 %N605 %N606 %N607 %N608 %N609 %N610 %N611 %N612 %N613 %N614 %N615 %N616 %N617 %N618 %N619 %N620 %N621 %N622 %N623 %N624 %N625 %N626 %N627 %N628 %N629 %N630 %N631 %N632 %N633 %N634 %N635 %N636 %N637 %N638 %N639 %N640 %N641 %N642 %N643 %N644 %N645 %N646 %N647 %N648 %N649 %N650 %N651 %N652 %N653 %N654 %N655 %N656 %N657 %N658 %N659 %N660 %N661 %N662 %N663 %N664 %N665 %N666 %N667 %N668 %N669 %N670 %N671 %N672 %N673 %N674 %N675 %N676 %N677 %N678 %N679 %N680 %N681 %N682 %N683 %N684 %N685 %N686 %N687 %N688 %N689 %N690 %N691 %N692 %N693 %N694 %N695 %N696 %N697 %N698 %N699 %N700 %N701 %N702 %N703 %N704 %N705 %N706 %N707 %N708 %N709 %N710 %N711 %N712 %N713 %N714 %N715 %N716 %N717 %N718 %N719 %N720 %N721 %N722 %N723 %N724 %N725 %N726 %N727 %N728 %N729 %N730 %N731 %N732 %N733 %N734 %N735 %N736 %N737 %N738 %N739 %N740 %N741 %N742 %N743 %N744 %N745 %N746 %N747 %N748 %N749 %N750 %N751 %N752 %N753 %N754 %N755 %N756 %N757 %N758 %N759 %N760 %N761 %N762 %N763 %N764 %N765 %N766 %N767 %N768 %N769 %N770 %N771 %N772 %N773 %N774 %N775 %N776 %N777 %N778 %N779 %N780 %N781 %N782 %N783 %N784 %N785 %N786 %N787 %N788 %N789 %N790 %N791 %N792 %N793 %N794 %N795 %N796 %N797 %N798 %N799 %N800 %N801 %N802 %N803 %N804 %N805 %N806 %N807 %N808 %N809 %N810 %N811 %N812 %N813 %N814 %N815 %N816 %N817 %N818 %N819 %N820 %N821 %N822 %N823 %N824 %N825 %N826 %N827 %N828 %N829 %N830 %N831 %N832 %N833 %N834 %N835 %N836 %N837 %N838 %N839 %N840 %N841 %N842 %N843 %N844 %N845 %N846 %N847 %N848 %N849 %N850 %N851 %N852 %N853 %N854 %N855 %N856 %N857 %N858 %N859 %N860 %N861 %N862 %N863 %N864 %N865 %N866 %N867 %N868 %N869 %N870 %N871 %N872 %N873 %N874 %N875 %N876 %N877 %N878 %N879 %N880 %N881 %N882 %N883 %N884 %N885 %N886 %N887 %N888 %N889 %N890 %N891 %N892 %N893 %N894 %N895 %N896 %N897 %N898 %N899 %N900 %N901 %N902 %N903 %N904 %N905 %N906 %N907 %N908 %N909 %N910 %N911 %N912 %N913 %N914 %N915 %N916 %N917 %N918 %N919 %N920 %N921 %N922 %N923 %N924 %N925 %N926 %N927 %N928 %N929 %N930 %N931 %N932 %N933 %N934 %N935 %N936 %N937 %N938 %N939 %N940 %N941 %N942 %N943 %N944 %N945 %N946 %N947 %N948 %N949 %N950 %N951 %N952 %N953 %N954 %N955 %N956 %N957 %N958 %N959 %N960 %N961 %N962 %N963 %N964 %N965 %N966 %N967 %N968 %N969 %N970 %N971 %N972 %N973 %N974 %N975 %N976 %N977 %N978 %N979 %N980 %N981 %N982 %N983 %N984 %N985 %N986 %N987 %N988 %N989 %N990 %N991 %N992 %N993 %N994 %N995 %N996 %N997 %N998 %N999
0

Я обнаружил, что Defraggler от Piriform имеет возможность отображать полный список файлов, присутствующих в данном блоке на карте тома, а также выделяет все блоки, в которых можно найти хотя бы один сектор данного файла. Жаль, что он не обеспечивает соответствующий диапазон секторов, но пока это все еще лучший инструмент, который я нашел для этой конкретной цели.

MyDefrag, другое популярное программное обеспечение для дефрагментации, имеет более точную сетку, позволяет масштабировать и напрямую предоставляет имя файла, занимающего любой блок, на который указывают, но он не дает список файлов, найденных в диапазоне секторов, и это ни точно, ни практически невозможно навести курсор на каждый блок размером в пиксель, чтобы проверить, какие файлы находятся там (кроме того, если файл имеет тысячи фрагментов, как в случае с некоторыми из файлов, которые мне еще предстоит восстановить, невозможно поймать торговый центр).

Если у кого-то есть другая хорошая идея ... это может принести пользу многим людям, имеющим аналогичную проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .