У нас есть несколько файлов на сервере 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
или что-то в этом роде. Само имя файла могло быть испорчено.