1

Я пытаюсь обновить установку Windows 7 до Windows 10, но на шаге MIGRATE_DATA процедура повторяется с ошибкой.

Исследуя, что может предотвратить миграцию, я обнаружил два поврежденных файла на загрузочном диске (твердотельный накопитель емкостью 100 ГБ в формате NTFS). Поврежденные файлы не видны в проводнике, но были обнаружены при поиске больших каталогов с использованием du в Cygwin:

du: cannot read directory './Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETPortable/v4.0/S\177ste\344.Ne\247.xml': File exists
du: cannot read directory './Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETPortable/v4.6/Profile/Profile84/S9stem.Nef.Requests.xml': File exists

Оба файла ведут себя одинаково в моих попытках. Первый файл указан как ls -l так:

$ ls -l /cygdrive/c/Program\ Files\ \(x86\)/Reference\ Assemblies/Microsoft/Framework/.NETPortable/v4.0
total 6892
(...)
-rwxrwx---+ 1 SYSTEM       SYSTEM         362197 Mar 12  2014 System.xml
drwxr-x---  1 Unknown+User Unknown+Group       0 Dec  3  2018 S?ste?.Ne?.xml
-rwxrwx---+ 1 SYSTEM       SYSTEM         235088 Mar 14  2014 mscorlib.dll(...)

Хотя завершение не будет работать с его именем, ввод его с использованием символов Юникода в команде rm не имеет никакого эффекта, и добавление в команду команды strace говорит:

   46  108762 [main] rm 8608 path_conv::check: this->path(C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\S177ste344.Ne247.xml), has_acls(1)
   42  108804 [main] rm 8608 unlink: unlinking a nonexistent file
   45  108849 [main] rm 8608 __set_errno: int unlink(const char*):1054 setting errno 2
   42  108891 [main] rm 8608 unlink: -1 = unlink(/cygdrive/c/Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETPortable/v4.0/S177ste344.Ne247.xml), errno 2

Я говорю "файл", потому что по их именам и расположению эти элементы на самом деле были файлами, а не каталогами, как указывает их ACL (System.Net.xml и System.Net.Requests.xml). Очевидно, в какой-то момент произошла коррупция.

Просто для удовольствия, это то, что повышенный cmd говорит о файле (на французском языке, но у вас есть идея, странная дата и количество, плюс он оказывается скрытым):

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0>dir /ah
 Le volume dans le lecteur C s’appelle BootSSD
 Le numéro de série du volume est 0EA2-18D0

 Répertoire de C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0

13/05/30600  04:58              Ssteõ.Neº.xml
               0 fichier(s)                0 octets
               1 Rép(s)  30 887 821 312 octets libres

Проблема с этим повреждением в том, что он стабилен: использование chkdsk /f c: не влияет на эти файлы.

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

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

Есть идеи?

1 ответ1

1

Переходный ответ на мой собственный вопрос. Я использовал живой USB-ключ с RescueCD и смонтировал раздел с помощью ntfs-3g:

% ntfs-3g /dev/sda1 /mnt/windows
% rm /mnt/windows/Program\ Files\ \(x86\)/Reference\ Assemblies/Microsoft/Framework/.NETPortable/v4.0/S$'\177'steõ.Neº.xml

Эти два файла были перечислены как это, и были удалены без видимой проблемы, задача, которая была невозможна под Windows:

-rwxrwxrwx 2 root root    0 Dec  3  2018 S?steõ.Neº.xml
-rwxrwxrwx 2 root root  161 Jul  2  1983 S9stem.Nef.Requests.xml

Затем я использовал очень простой find /mnt/windows -iregex '.*[^a-zA-Z0-9_.() {}#]+' , Который позволил мне найти другой странный файл, расположенный в немного более чувствительном площадь, но с нулевым размером (обычно имя commctl32.dll, библиотека общих элементов управления):

-rwxrwxrwx 1 root root 0 Sep  6  2021 ./windows/winsxs/x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af/cñmcte32.dll

Я публикую это как прогресс в моей попытке очистить файловую систему. Я никогда раньше не использовал ntfs-3g, и это довольно приятно. Стабильно ли это, время покажет :)

Обновление: в c:\windows\ehome был последний "поврежденный" файл. Этот каталог является остатком от Media Center, который удаляется при обновлении до Windows 10. Это был последний элемент, который препятствовал успешному обновлению Windows 10 в FIRST_PASS/MIGRATE_DATA. Как я понял впоследствии, это довольно простой сбой при резервном копировании каталога Windows до Windows.old . Я видел более четкие коды ошибок ...

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