Удаление каталога с файлами-хардлинками

Пытался на Windows 8.1 удалить каталог, в котором полтысячи подкаталогов и в каждом по несколько файлов (или десятков файлов), которые являются хардлинками. Система на любой файл упорно выдавала ошибку, что файл не найден и Error Code 0x80070490 (Element not found). Единственный вариант, который реально удалял такие файлы, был Far, но удалять каждый файл по одному (сначала удалять хард линк, потом файл), мягко говоря, перспектива не хорошая. Удалить хардлинк из одного файла можно командой:

fsutil reparsepoint delete filename.ext

Затем удалить сам файл. Но это тоже нереально. Поэтому можно использовать рекурсивный цикл:

For /R %i in (*.*) do fsutil reparsepoint delete "%i"

После этого можно удалять каталоги прямо с файлами. К сожалению, такой вариант не удаляет ссылки у скрытых файлов, но тоже неплохо, удалось все удалить.


Теги: , , , , , , ,

Как удалить неудаляемое?

Как впихнуть невпихуемое удалить неудаляемый файл на Виндовс?

Случилось мне распаковать архив в котором один файл был с именем, заканчивающимся на точку (т.е. как бы “без расширения”, с точки зрения системы). При попытке удалить из корзины папку с этим файлом, мне выдавалась ошибка: “The system cannot find the file specified”. И все. Даже в командной строке не удалялся этот злобный файл. Решилось все переименованием файла через Far Manager (в родной командной строке переименовать не удавалось!). далее папку из корзины я удалил через командную строку:

H:\RECYCLER>rmdir /S S-1-5-21-3682602030-802360155-3644708729-1003
S-1-5-21-3682602030-802360155-3644708729-1003, Are you sure (Y/N)? y

H:\RECYCLER>

Или можно было просто очистить корзину.


Теги: , , ,

Восстановление открытого удаленного из системы файла на FreeBSD

Восстановить файл, который в системе удален, но еще открыт каким-то процессом, можно при помощи набора утилит Sleuth Kit (www.sleuthkit.org).

1. нужно узнать номер иноды, которую имеет удаленный открытый файл:

~> lsof +aL1 /

Вместо / нужно указать раздел, где был файл (или поочередно запускать на все разделы, если не знаете, в каком находится открытый файл. Пример вывода:

~> lsof +aL1 /home
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NLINK NODE NAME
less    29154 root    4r  VREG   0,87        8     0 33043586 /home (/dev/ad0p7)

2. используйте утилиту icat, которая откроет файл по номеру иноды:

~> icat -r /dev/ad0p7 33043586 > /path/to/new-filename

Если вы знаете имя каталога, где открыт файл, его имя можно получить непосредственно из каталога (пока файл открыт и не удален окончательно):

cat /home/work | strings

/home/work — это каталог. Но из полученной белиберды еще нужно удалить символы вида “^X” и имена существующих файлов. Более элегантный способ:

~> ls -1ai /home/
33044046 work/

~> fls -dF /dev/ad0p7 33044046
r/r * 33043586(realloc):        testme

В первой команде я узнал номер иноды каталога /home/work, затем вывел все удаленные файлы. testme – тот самый удаленный файл, открытый в less’е.

/home/ports/sysutils/sleuthkit
/home/ports/sysutils/lsof

Теги: , , , , , , ,

VMWare 8 + real HDD disk

При попытке подключить физический диск к виртуалке VMWare 8 (VMWare 8.0.0 build-471780), выдавались ошибки вида:

 

vmx| W110: DISKLIB-FLAT : Open: Failed to dismount physical drive 2. Perhaps its volumes have open files on them?
vmx| I120: DISKLIB-FLAT : "\\.\PhysicalDrive2" : failed to open (73): .
vmx| I120: DISKLIB-LINK : "D:\VM\backup-FreeBSD72\FreeBSD72.vmdk" : failed to open (The physical disk is already in use).

Лечится довольно просто: на файл *.vmdk (в моем случае – FreeBSD72.vmdk) добавил пользователя __vmware__ с полным доступом (Full Control, Modify, Read & Execute, Read, Write). По умолчанию там были только Users, SYSTEM и Administrators.


Теги: , , , , , , , ,

Ярлыки в Виндовс или как найти файл по ярлыку

Ярлык файла или программы – это хорошо. Но что делать, если нужно найти сам файл/программу? Можно вручную. Кликаете правой клавишей по ярлыку, выбираете самый последний пункт — “Свойства” (“Properties”), на вкладке “ярлык” (“shortcut”) жмете “Найти объект..” (“Find target..”).

Есть и другой способ. Можно добавить в меню проводника специальный пункт “Open File Location” с помощью хака.

Add Open File Location Option.reg добавляет пункт меню, Remove Open File Location Option.reg – удаляет.

Скачать можно тут.

Читать остальную часть заметки »

Теги: , , , , , , , ,