четверг, 7 ноября 2019 г.

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


    Предыстория



    Сразу оговорюсь, что под ссылками в Windows я понимаю ссылки в NTFS. В FAT механизмов ссылок, насколько мне известно, предусмотрено не было.

    Ядро Windows поддерживает следующие виды ссылок:
    • Hard Links — жёсткие ссылки, как в *nix. Доступны начиная с Windows NT4.
    • Junction Points — аналог символических ссылок. Доступен начиная с Windows 2000 (NTFS 5).
    • Symbolic Links — символьные ссылки. Доступны начиная с Windows Vista.
    Если вы никогда не имели дела с символическими и жёсткими ссылками, но хотели бы узнать о них, советую прочитать отрывок из документации файлового менеджера FAR, спасибо хабрачеловеку allemeine. Там говорится только о Hard Links и Junction Points, но этого вполне достаточно. Symbolic Links действуют так же, как и Junction Points, с той разницей, что могут указывать на файлы (и реализованы в Windows по-другому).

    Hard Links можно создавать только на файлы, Junction Points — только на директории, Symbolic Links — на файлы и директории. В дальнейшем под «жёсткими ссылками» подразумеваются Hard Links, под «символьными» — Junction Points и Symbolic Links.

    Жёсткие ссылки действительны в пределах одного раздела, символьные — могут пересекать границы разделов. В связи с этим символьные ссылки могут поломаться, если структуру разделов поменять.

    Не со всем, что поддерживается ядром, умеет нормально работать эксплорер. Будьте осторожны при использовании Junction Points в версиях Windows до Vista. При удалении Junction Point эксплорер может залезть внутрь директории, на которую ссылается Junction Point и поудалять там всё, а затем удалить Junction Point, хотя должен лишь удалить ссылку. Наверняка могут возникнуть проблемы и при перемещении или копировании Junction Point'ов.

    Мне неизвестно, нормально ли в версиях Windows до Vista относятся к Junction Points стандартные утилиты типа rmdir.

    Дополнительные материалы по теме


    Отмечу англоязычную статью, в которой описаны нюансы использования ссылок и некоторые программы, позволяющие с ними работать. Статья устаревшая, так что в ней говорится только о Hard Links и Junction Points (причём на последние в статье нередко ссылаются, как на symbolic links...).

     хорошее описание всех видов ссылок есть ещё в справке по NTFS Links (дополнению для Total Commander, см. ниже).

    Софт


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

    Утилиты от Microsoft

    Windows >= Vista

    В Windows Vista добавили команду mklink для создания символьных и жёстких ссылок

    Windows >= 2000

    fsutil hardlink create ссылка файл

    Создаёт Hard Link на файл (источник).

    linkd ссылка директория

    Создаёт Junction Point на директорию (источник). Утилита входит в Microsoft Windows Resources Kit.

    Расширения для Explorer

    NTFS Link интегрируется в Explorer и добавляет во всплывающее меню, появляюшееся после перетаскивания правой кнопкой мыши, пункты «Create junction point» и «Create hard link». Кроме того, она перехватывает вызовы Explorer'а, обеспечивая нормальное перемещение/копирование/удаление созданных ссылок.

    NTFS Links (не путать с дополнением для Total Commander, см. ниже) — абсолютно аналогичная программа.
    Я рекомендуюLink Shell Extension — аналогичная программа, обладающая расширенным функционалом и очень подробным описанием.

    NTFS Links — дополнение для Total Commander

    Страница программы  Плагин может запускаться как отдельная программа, вне Total Commander'а.

    FAR

    Консольный файловый менеджер FAR уже давно поддерживает Hard Links и Junction Points «из коробки». Для создания ссылки используйте сочетание клавиш Alt-F6 ;-)

    Junction Link Magic

    Junction Link Magic — программа с графическим интерфейсом для создания, изменения и модификации Junction Points.

    Junction — консольная программа для создания Junction Points

    Junction лучше, чем linkd, тем, что не нужно тащить весь Resource Kit :-)
    .

    0 коммент.:

    Отправить комментарий