Бесконечно вложенные папки

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Бесконечно вложенные папки

Сообщение ANDLL » 31.08.2007 (Пт) 15:19

У ntfs есть замечательная возможность - вы можете создавать так называемые Directory Junction. Если у вас есть папка(а ровно и файл), то вы можете создать другую папку, которая будет в точности указывать на начальную. Причем это будет совершенно прозрачно для всех программ. Для создания таких ссылок можно использовать команду linkd(но что бы она работала на windows xp необходимо установить Windows 2003 Resource Kits).
Использование простое, если есть папка скажем C:\A, и мы пишем
linkd C:\B C:\A
то у нас в корне диска C появляется папка с именем B, которая всегда имеет то же содержимое что и A. Единственное, чем примечательна папка B - у нее установлен атрибут &h400.
Большинство файловых мэнеджеров(тот же проводник) не проверяют этот атрибут и при работе не делают различий между ссылками и папками(вопрос нумер один, есть ли мэнеджеры которые действуют по разному с ссылками и папками?). Так, если вы попытаетесь скопировать папку C:\B в другую папку, то у вас даже не спросят, что именно вы хотите сделать: скопировать только ссылку, или саму папку. Они просто будут действовать так, как будто C:\B это вполне себе самостоятельная папка. Тотал командер отмечает что C:\B это не просто папка , а ссылка, но по факту все равно действует так как будто это обычная папка.

Теперь попробуем создать бесконечно вложенную папку
Как? Всего двумя командами
Код: Выделить всё
md C:\X
linkd C:\X\X C:\X
Теперь у нас в папке C:\X есть папка X, в которую вложена папка X, в которую вложена папка X,в которую вложена папка X, ну вы поняли ;)
Однако, действительно ли она бесконечна?
Если попробовать пощелкать по папке, то методом проб можно прийти к выводу, что вложенность заканчивается на папке
C:\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X
В ней есть папка X. Но если по ней дважду щелкнуть, появляется ошибка
Нет доступа к C:\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X\X.
Имя этого файла не может быть разрешено системой.

Вопрос второй, что за странное ограничение? Ограничено число вложений или число переходов по символическим ссылкам?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.08.2007 (Пт) 15:25

Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.08.2007 (Пт) 15:36

Замечания:
* linkd -- не стандартная утилита, а часть рескита. Ни в одну версию Windows средства создания таких юнкций не встроены.
* Гораздо легче их создавать Фаром. Он и хард-линки тоже умеет делать, кстати.
* Практически все менеджеры (включая Эксплорер!) различают папки и ссылки, и корректно обрабатывают такие бесконечно-рекурсивные папки
* Ограничена длина пути, и количество переходов по ссылкам (включая симлинки в каталоге объектов NT) тоже ограничено. Например, на диске, созданном через subst, удастся войти на один уровень вложенности меньше.
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95

    TopList