Назад | Перейти на главную страницу

Не удается получить доступ к файлу NTFS после BSOD. Chkdsk не обнаруживает коррупции?


У нас есть несколько файлов на сервере Windows, которые отображаются в списках каталогов, но к ним нет доступа. Я могу стать владельцем файлов, и ACL показывает, что у всех есть доступ на чтение / запись / выполнение; но я не могу открыть файлы. chkdsk не находит проблем с объемом.

Сервер 64-битный Win 2008 R2 Standard SP1.

Недавно на этом сервере был BSOD, и файлы были изменены незадолго до сбоя. Сбой не был связан с файловой системой, но я думаю, что это повредило что-то в памяти ядра, и это повредило файловую систему.

Вот что я вижу, пытаясь получить доступ к файлу com2.log:

D:\Logs\Application>dir com2*
Volume in drive D is Data
Volume Serial Number is 84D5-FD84

Directory of D:\Logs\Application

09/07/2011  06:57 PM           169,025 com2.log
       1 File(s)        169,025 bytes
       0 Dir(s)  39,320,612,864 bytes free

D:\Logs\Application>dir com2.log

 Directory of \\.

File Not Found

D:\Logs\Application>dir com2.*

Directory of \\.

File Not Found

D:\Logs\Application>cacls com2.log
The filename, directory name, or volume label syntax is incorrect.

D:\Logs\Application>more com2.log
Cannot access file \\.\com2

D:\Logs\Application>more com2*
Cannot access file D:\Logs\Application\com2.log

(cacls не показывает ACL, но я вижу его в проводнике Windows.)

Похоже, проблема в расширении. dir com2* находит, но dir com2.* не.

Файл отображается как com2.log в проводнике Windows, но когда я дважды щелкаю по нему, я получаю эту ошибку в Блокноте, относящуюся к расширению файла .txt:

Cannot find the \\.\com2.txt file.
Do you want to create a new file?

Кто-нибудь видел что-нибудь подобное раньше? Есть предложения по устранению неполадок?

COM2 - это зарезервированное ключевое слово, буквально для аппаратного порта COM2, и я не уверен, как этот файл вообще попал туда, поскольку Windows не позволит вам создать файл с именем COM2.log. Попробуйте прямо сейчас, вы получите сообщение об ошибке. Для удовольствия также попробуйте создать LPT1.txt.

В соответствии с Именование файлов, путей и пространств имен, следующие имена являются зарезервированными и не должны использоваться в качестве имен файлов.

  • Не используйте следующие зарезервированные имена устройств в качестве имени файла:

    CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Также избегайте этих имен, за которыми сразу следует расширение; например, не рекомендуется использовать NUL.txt.

Вы можете попробовать переименовать файл в проводнике или с помощью ren com2.log somethingelse.log чтобы увидеть, можете ли вы затем манипулировать файлом, однако у меня такое чувство, что это не сработает по той же причине, по которой вы не сможете создать файл в первую очередь.

В противном случае, если вы последуете Как удалить файлы с зарезервированными именами в Windows вы сможете удалить файл с помощью следующей команды. Используя тот же "полный" путь, я полагаю, вы также сможете переименовать файл, используя REN вместо того DEL.

DEL \. \ C: \ SomeDirectory \ com2.log

Вы можете попробовать переместить файл: move com2* com2.log.new или что-то в этом роде. Само имя файла могло быть испорчено.