Точка соединения NTFS

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Точка соединения NTFS (англ. NTFS Junction Point) — нововведение в файловой системе NTFS 3.0 (файловая система по умолчанию в Windows 2000). Суть нововведения заключается в том, что указанный логический диск либо папка будет отображаться как папка на другом логическом диске либо в другой папке. Эта возможность позволяет создавать некоторые эффекты с файловой системой (например, хранить два профиля одного и того же пользователя и переключаться между ними без особых проблем). Точка соединения реализована в NTFS как особый тип точки повторной обработки (англ. reparse point)[1].

Данную функцию можно настроить в оснастке «Управление дисками»: щелчок правой кнопкой на подключаемом диске, пункт «Изменить букву диска или путь к диску…», далее в списке будут отображены все возможные пути к диску, по умолчанию диск доступен по своей букве («Х:» — где Х буква диска). Менять пути к диску можно соответствующими кнопками под списком.

Для создания точки соединения на папку можно воспользоваться утилитой linkd, которая входит в комплект Windows 2000 и Windows XP Resource Kits. В Windows Vista и выше точку соединения или символьную ссылку можно создать с помощью стандартной консольной команды mklink.

Для доступа к такой папке не нужны никакие дополнительные настройки приложений, то есть доступ осуществляется введением адреса папки. Таким образом, исчезает ограничение на 26 локальных томов на одном компьютере (количество букв английского алфавита для именования дисков), так как том может быть доступен без присвоения ему имени.

Предупреждения

[править | править код]
  • Microsoft настоятельно рекомендует:[2]
    • Используйте списки управления доступом (ACL) NTFS для защиты точек соединения от непредумышленного удаления.
    • Используйте списки управления доступом (ACL) NTFS для защиты файлов и каталогов, являющихся объектами точек соединения, от непредумышленного удаления и других операций файловой системы.
    • Не удаляйте точку соединения с помощью Проводника, команды del /s или других средств файловой системы, рекурсивно работающих с деревьями каталогов. Данные средства воздействуют на целевой каталог и все его подкаталоги. Для безопасного удаления точек соединения рекомендуется использовать только специальные утилиты для работы с точками соединения.
    • Проявляйте осторожность, применяя списки управления доступом или изменяя сжатие файлов в дереве каталогов, в которое входят точки соединения NTFS.
    • Не создавайте циклы пространства имён с точками соединения NTFS или DFS.
    • Размещайте все точки соединения в безопасном месте в пространстве имён, в котором их тестирование будет безопасным и где другие пользователи не смогут по ошибке удалить их или войти в них.
  • Существуют проблемы с точками соединения на контроллерах доменов MS Windows 2000 и некоторых файлах Active Directory.[3]

Замеченные особенности

[править | править код]

Windows 2000/XP/2003

[править | править код]

Проводник Windows

[править | править код]
  • Удаление точки соединения в Проводнике клавишами Shift+Delete приведёт к немедленному удалению целевых файлов.
  • Если точка соединения отправлена в корзину, целевые файлы будут казаться незатронутыми, но будут удалены при очистке корзины.
  • Перемещение точки соединения в пределах диска просто перемещает точку соединения. Однако перемещение на другой диск превратит её в обычный каталог и переместит вместе с ним все файлы (оставив исходный целевой каталог пустым). Отмена перемещения вернёт каталог и всё его содержимое назад на исходный диск, но целевой каталог останется пустым (то есть точка соединения заново не создаётся).
  • При просмотре папки через Проводник рекомендуется использовать Shift+Delete для удаления папок; файлы же удаляются обычным способом. Отключение корзины диска, на котором находится точка соединения, позволит удалять папки обыкновенным способом.

Интерпретатор командной строки (cmd.exe)

[править | править код]
  • В Windows 2000 и более поздних версиях команда dir распознаёт точки соединения, отображая в списке содержимого <JUNCTION> вместо <DIR> (используйте dir с ключом /A или /AL).
  • Любые команды для работы с файлами обычного каталога здесь будут работать так же. Поэтому не следует использовать команду del myjunction — в результате уничтожатся все файлы целевого каталога.
  • Команды rmdir и move отлично работают с соединениями с той оговоркой, что move (в противоположность Проводнику, как отмечалось выше) не даст переместить соединение на другой раздел.
  • Команда rmdir безопасна в том смысле, что она удаляет только точку соединения, но не целевые файлы.
  • При просмотре каталога через интерфейс командной строки можно удалять файлы, но, в отличие от Проводника, каталоги также могут быть удалены (например, с помощью rmdir /s dirname).
  • Используя команду linkd с ключом /d, можно безопасно удалить точку соединения.
  • Поместив точку соединения непосредственно в указываемый ею каталог, можно создать бесконечный цикл в файловой структуре. Это способно запутать некоторые программы (например антивирусы), сканирующие целиком дерево папок; выйти из рекурсии они смогут только при аварийном завершении или при попытке обратиться к пути с длиной более 255 символов, что породит ошибку Windows API. Пример такой ситуации можно найти в Windows Vista и Windows 7: C:\Users\%USERNAME%\AppData\Local\Application Data. Здесь Application Data — точка соединения, указывающая на C:\Users\%USERNAME%\AppData\Local\ для совместимости с устаревшими приложениями.
  • Наследование прав ACL изначально распространяется на разделы и не работает с соединениями.

Проводник Windows

[править | править код]
  • Точки соединения обозначаются значком трехзвенной цепочки.
  • Теперь Проводник позволяет безопасно удалять точки соединения.
  • Точка соединения может быть восстановлена из корзины.

Символьные ссылки

[править | править код]

Windows Vista поддерживает новую возможность — символьные ссылки, заменяющие точки соединения в Windows 2000 и Windows XP. Они призваны помочь миграции приложений и для улучшения их совместимости с операционными системами UNIX.[4]

В отличие от точек соединения, символьные ссылки могут быть связаны с файлом или даже с удалённым сетевым путём SMB. К тому же реализация символьных ссылок NTFS предоставляет полную поддержку ссылок между файловыми системами. Однако для подобной межкомпьютерной функциональности символьных ссылок требуется их поддержка удалённой системой, что тем самым ограничивает их поддержку до Windows Vista и последующих операционных систем.

Примечания

[править | править код]
  1. Создание символьной ссылки Windows на C/C++. Дата обращения: 29 апреля 2011. Архивировано 17 марта 2011 года.
  2. Создание точек соединения NTFS и управление ими. Microsoft. Дата обращения: 13 декабря 2010. Архивировано 15 марта 2012 года.
  3. Neohapsis Архивная копия от 5 июня 2011 на Wayback Machine.
  4. Symbolic Links. MSDN. Дата обращения: 9 мая 2011. Архивировано 15 марта 2012 года.