Жесткие и символические ссылки давно знакомы и активно используются Linux-администраторами, в то время как их Windows коллеги используют их гораздо реже, а некоторые вообще не знают о такой возможности. Тем не менее такая возможность в Windows существует и позволяет значительно упростить некоторые сценарии работы с папками и файлами. В данной статье мы рассмотрим все виды ссылок, доступные в среде ОС Windows, а также разные способы работы с ними, начиная от командной строки и заканчивая PowerShell.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Жесткие ссылки (HardLink)
Жесткие ссылки представляют собой дополнительную запись в файловой таблице раздела для существующего файла. Таким образом жесткая ссылка ничем не отличается от исходного файла, но файл при этом не копируется физически и остается на диске в единственном экземпляре. При изменении файла по любой из жестких ссылок, остальные обновляются автоматически (что логично, так как файл один).
Мы можем переименовывать, копировать, перемещать (в пределах логического тома) ссылки — размер занимаемого места при этом не изменится. При удалении ссылок файл продолжает существовать до тех пор, пока не будет удалена последняя жесткая ссылка на него. Фактически отличить, где находится оригинальный файл, а где жесткая ссылка невозможно, по сути, файл на разделе это и есть жесткая ссылка.
Жесткая ссылка может существовать только в пределах логического тома, поддерживается файловыми системами NTFS и ReFS начиная со сборки 19536.
Для создания жесткой ссылки можно воспользоваться утилитой mklink:
mklink /H C:\Folder1\LinkFileName C:\Folder\FileName
Где ключ /H предписывает создать именно жесткую ссылку, далее следует путь к новому файлу и целевому файлу, на который мы делаем ссылку. Путь можно указывать как абсолютные, так и относительные, в имени создаваемого файла не забывайте указывать расширение.
Ссылки можно создавать и при помощи PowerShell, для этого воспользуйтесь командой:
New-Item -ItemType HardLink -Path C:\Folder1\LinkFileName -Target C:\Folder\FileName
Команда другая, но принцип тот же самый: -ItemType — тип создаваемой ссылки, в нашем случае жесткая ссылка, -Path — путь к создаваемому файлу ссылки, -Target — файл на который мы делаем ссылку.
Можно ли сделать жесткую ссылку на директорию? Нет, только на файлы.
Вроде бы все понятно, но если внимательный читатель заглянет в свойства папки с жесткой ссылкой, то он увидит, что ее размер равен исходному файлу, если сделаем в ней еще одну жесткую ссылку — двум исходным файлам. Как так? Не стоит переживать, все нормально. Для операционной системы жесткая ссылка ничем не отличается от обычного файла и при подсчете свободного места учитывается размер каждой ссылки, но на самом деле на диске хранится единственная копия. В этом можно убедиться, если одновременно с созданием жестких ссылок контролировать свободное место на диске.
При желании мы можем провернуть даже такой фокус:
Какой вывод можно сделать из того, что мы увидели и где нам могут пригодиться жесткие ссылки? Прежде всего для предоставления пользователям доступа к объемным архивам, образам или инсталляционным пакетам. Скажем у вас есть файловый сервер и несколько отделов, каждому из которых нужно предоставить доступ к одному и тому же большому файлу. При этом вы можете не бояться, что кто-то удалит файл, он удалит его только у себя в директории, для остальных пользователей он останется доступен.
Но при этом надо очень внимательно относиться к вопросу одновременного редактирования файла, так как он существует в единственном экземпляре, но доступен по множеству ссылок в этом сценарии могут возникнуть самые разные коллизии.
Точки соединения (Junction)
Очень старая технология, поддерживаемая еще начиная с Windows 2000, позволяет сделать один из каталогов псевдонимом другого каталога. Чем-то напоминает символические ссылки, но в крайне упрощенном варианте. В качестве цели можно использовать только локальные папки, но при этом нет ограничения по размещению их на одном томе. Т.е. целевая папка может находиться на диске C:, а точка соединения для нее на диске D: и все будет работать. Точки соединения поддерживаются файловыми системами NTFS и ReFS.
Для создания точки соединения можно использовать mklink:
mklink /J D:\LinkFolder C:\Folder
Ключ /J указывает на создание точки соединения, далее следует папка каталога-псевдонима и папка целевого каталога. При любом изменении целевого каталога (перемещение, переименование, удаление) точка соединения перестает работать.
Обратите внимание, что данная папка в проводнике отображается как ярлык, а выводе команды dir как точка соединения.
Это же действие в PowerShell:
New-Item -ItemType Junction -Path D:\LinkFolder -Target C:\Folder
Комментировать здесь особо нечего, краткость не входит в число добродетелей PowerShell, но не оставляет места догадкам, все просто и понятно.
Зачем сейчас нужны точки соединения? После появления в NT 6.0 настоящих символических ссылок не нужны, но вы можете встретиться с ними как в устаревших системах, так и в современных, где они могут присутствовать в виде наследия. Поэтому знать о них и уметь с ними работать современному администратору надо.
Символические ссылки (SymbolicLink)
Пожалуй, самый популярный вид связи, позволяет создавать множество псевдонимов для файлов или каталогов размещая их на любых поддерживаемых локальных файловых системах. В качестве цели могут быть использованы как локальные, так и сетевые объекты. При создании символической ссылки можно использовать как абсолютные, так и относительные пути. Но в последнем случае вы не можете перемещать ссылку — она перестанет работать. Символические ссылки поддерживаются начиная с NT 6.0 (Vista и Server 2008) и работают с файловыми системами NTFS и ReFS.
Для создания символических ссылок можно использовать mklink, без параметров она создает симлинк для файла:
mklink C:\Folder1\LinkFileName C:\Folder\FileName
При создании ссылки не забываем указать расширения для файла. Как и в случае с точкой соединения символическая ссылка отображается в виде ярлыка и обозначается в выводе команды dir:
Для создания символической ссылки на директорию добавьте ключ /D:
mklink /D D:\LinkFolder C:\Folder
В PowerShell все проще, тип объекта будет определен автоматически:
New-Item -ItemType SymbolicLink -Path C:\Folder1\LinkFileName -Target C:\Folder\FileName
Если в качестве цели указан файл — будет создана ссылка на файл, каталог — ссылка на каталог.
При переименовании, перемещении или удалении исходного файла или каталога все символические ссылки работать перестанут:
При копировании символической ссылки за пределы локального тома будет скопирован исходный файл, даже если целевой том поддерживает работу со ссылками, но это не мешает создать новую ссылку на другом томе.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Используя жёсткие ссылки файлов и каталогов, можно иметь несколько различных имён файлов или каталогов, ссылающихся на одни и те же данные. В windows механизм работает в файловой системе NTFS. Статья о том, как сделать такие ссылки в windows.
Возможно вы сталикивались со следующими задачами:
- Установить приложение или игру на HDD диск, а часть перенести на SSD.
- Перетащить данные приложения, без правки конфигурации. (пример ниже для SQL Server)
- Приложение/данные не влазят на один диск, а на другом диске как раз есть свободное место под оставшуюся часть.
Всё это можно решить используя ссылки на файлы и каталоги. Например, начиная с Windows Vista в винде отсутствует каталог «Documents and Settings» а операционная система на него ссылается из папки «Users» для совместимости с приложениями написанными для Windows XP.
Создание символической ссылки
Для создание ссылки используется команда mklink
(из командной строки cmd
, кэп).
mklink
Создает символьную ссылку.
MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение
/D Создает символьную ссылку на каталог.
По умолчанию создается символьная ссылка на файл.
/H Создает жесткую связь вместо символьной ссылки.
/J Создает соединение для каталога.
Ссылка Указывает имя новой символьной ссылки.
Назначение Указывает путь (относительный или абсолютный), на который ссылается
новая ссылка.
Мне недавно хотелось удалить папку кеша обновлений Microsoft SQL Server, чтобы освободить 2 Гб на системном SSD диске. Вместо удаления я перенес данные на другой диск (D:). Cоздал символьную ссылку и, вуаля, место освобождено, а SQL Server думает, что данные на прежнем на месте.
C:\>mklink /D "c:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Update Cache" "d:\distr\Sql Server\Update Cache"
Символическая ссылка создана для c:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Update Cache <<===>> d:\distr\Sql Server\Update Cache
Существуют инструменты для создание ссылок через графический интерфейс, например Link Shell Extension или NTFS Link , также их можно легко сделать в Far’е по Alt+F6
Отличия жестких ссылок от символических ссылок и связей
Материал из справки Far Manager.
На разделах NTFS можно создавать жёсткие ссылки (HardLink) для файлов, связи (Junction) для папок и символические ссылки (SymLink) для файлов и папок с помощью команды Alt-F6.
Жёсткие ссылки
Жёсткая ссылка (HardLink) — это просто ещё одна запись в папке для данного файла.
Когда создаётся жёсткая ссылка, сам файл не копируется физически, а только появляется под ещё одним именем или в ещё одном месте, а его старые имя и местонахождение остаются нетронутыми. С этого момента жёсткая ссылка неотличима от первоначальной записи в папке. Единственное отличие — то, что для жёсткой ссылка не создаётся короткое имя файла, поэтому из ДОС-программ она не видна.
Когда меняется размер или дата файла, все соответствующие записи в папках обновляются автоматически. При удалении файла он не удаляется физически до тех пор, пока все жёсткие ссылки, указывающие на него, не будут удалены. Порядок их удаления значения не имеет. При удалении жёсткой ссылки в корзину количество ссылок у файла сохраняется.
FAR умеет создавать жёсткие ссылки, отображать их количество для каждого файла в отдельной колонке (по умолчанию это последняя колонка в 9-м режиме панелей), а также сортировать файлы по количеству жёстких ссылок.
Создавать жёсткие ссылки можно только на том же диске, на котором расположен исходный файл.
Связи
Эта технология позволяет отображать любые локальные папки на любые другие локальные папки. Например, если папка D:\SYMLINK указывает на C:\WINNT\SYSTEM32 в качестве своей цели, то программа, обращающаяся к D:\SYMLINK\DRIVERS, будет на самом деле обращаться к C:\WINNT\SYSTEM32\DRIVERS. В отличие от жёстких ссылок, связи папок не обязательно должны располагаться на том же диске.
В Windows 2000 нельзя напрямую создать связь, ссылающуюся на папку CD-ROM, но это ограничение можно обойти, смонтировав CD-ROM диск на папку NTFS-раздела.
Символические ссылки
Символические ссылки (SymLink) на NTFS поддерживаются, начиная с Windows Vista (NT 6.0). Они представляют собой улучшенный вариант связей каталогов — символические ссылки могут указывать как на папки, так и на файлы, как на локальные, так и на сетевые, при этом поддерживаются относительные пути.
UPD PowerShell
Создание символической ссылки с помощью New-Item
New-Item -Path C:\LinkDir -ItemType SymbolicLink -Value F:\RealDir
Open with Code
Добавление пункта Open with Code после установки VS Code
Как отключить гибернацию на windows?
В данной статье описывается отключение (удаление файла hiberfil.sys) и повторное включение режима гибернации на компьютере под управлением Windows
Установка laravel/installer под windows bash (Ubuntu)
Сначала установите 2 расширения php:
sudo apt-get install php-zip
sudo apt-get install php-xml
Потом установщик laravel
Ошибка CredSSP при подключении по RDP
Устранение ошибки подключения по RDP связанное с установкой обновлений CredSSP для уязвимости CVE-2018-0886
Docker Volume Location In WSL 2
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
Windows. Docker не может занять свободный порт
net stop winnat
docker start ...
net start winnat
Время на прочтение3 мин
Количество просмотров396K
Предыстория
В своём топике «Впечатления от Яндекс.Субботника» хабрачеловек absolvo высказал удивление, что один из докладчиков не знал о том, что символьные ссылки есть и в 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…).
По словам хабрачеловека SamDark, хорошее описание всех видов ссылок есть ещё в справке по NTFS Links (дополнению для Total Commander, см. ниже).
Софт
Теперь можно перейти к рассмотрению программ для работы со ссылками. Да-да, если вы не пользуетесь FAR (см. ниже), вам понадобятся отдельные программы. Все программы, перечисленные ниже, бесплатны.
Утилиты от Microsoft
Windows >= Vista
В Windows Vista добавили команду mklink
для создания символьных и жёстких ссылок (спасибо за информацию хабрачеловеку metamorph).
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, см. ниже) — абсолютно аналогичная программа. Спасибо за комментарий хабрачеловеку vpbar.
Я рекомендую: Link Shell Extension — аналогичная программа, обладающая расширенным функционалом и очень подробным описанием. Спасибо за комментарий хабрачеловеку versia.
NTFS Links — дополнение для Total Commander
Страница программы (за информацию спасибо хабрачеловеку SamDark). Плагин может запускаться как отдельная программа, вне Total Commander’а.
FAR
Консольный файловый менеджер FAR уже давно поддерживает Hard Links и Junction Points «из коробки». Для создания ссылки используйте сочетание клавиш Alt-F6 Спасибо за комментарий хабрачеловеку 4xis.
Junction Link Magic
Junction Link Magic — программа с графическим интерфейсом для создания, изменения и модификации Junction Points. Спасибо за комментарий хабрачеловеку vady.
Junction — консольная программа для создания Junction Points
Junction лучше, чем linkd
, тем, что не нужно тащить весь Resource Kit Спасибо за комментарий хабрачеловеку corp.
UPD: обновил топик с учётом комментариев.
Ниже мы разберем понятие жестких и символических ссылок в Windows, расскажем про их основное предназначение и ключевые отличия. Также Вы сможете научиться быстро создавать ссылки стандартными способами Windows или при помощи специального ПО.
Содержание
- Символические ссылки
- Жесткие ссылки
- Как можно применить символические ссылки?
- Как упростить создание символических и жестких ссылок?
Символические ссылки
Символьные ссылки (также известный как «Мягкие ссылки» или «SymLink») представляют собой специальные объекты, в которых вместо информации и данных находится путь к конкретному файлу или каталогу на жестком диске компьютера.
Такой функционал имеет некоторые схожести с ярлыками, но в отличие от них, создается жесткая привязка символической ссылки к конкретному месту. Использование таких ссылок позволяет экономить место винчестере, а также получать своеобразную точку доступа к информации между различными файловыми системами, не заполняя носитель лишними копиями данных.
Ключевым моментом в использовании символических ссылок, является сохранение работоспособности программ и отдельных её объектов, на которые были созданы символические ссылки. Помимо этого, обычные ярлыки представляют собой ссылки, по которым можно перейти в оригиналы папок. Если пользователь перешел в оригинал папки по ярлыку, то все действия с файлами (удаление, изменение имени и т.д) будут иметь прямое воздействие на оригинал. В случае использования символических ссылок, пользователь сможет создать символический образ каталога (папки), в котором будут находиться символические ссылки на файлы оригинала. Стоит отметить, что такие данные имеют незначительный вес. Их размер примерно сопоставим с ярлыками, хотя из-за особенностей работы (символические ссылки буквально «обманывают» программы и операционную систему, выдавая под видом символической ссылки реально существующий объект), вес папки всегда будет показываться равным весу оригинала.
Жесткие ссылки
Жесткая ссылка или Hard Link имеет схожий функционал с символическими ссылками, но её ключевыми отличиями являются:
- Возможность работы только в одной конкретной файловой системе.
- Возможность работы в пределах только одного логического раздела.
- Жесткая ссылка так же, как и символическая ссылка воспринимается системой как оригинальный файл, но жесткая ссылка сохраняет свою оригинальность (все файлы жестких ссылок действительно являются оригиналами), в то время как при изменении настоящего файла или каталога символической ссылки, такие ссылки потеряют свою актуальность, поскольку им некуда будет ссылаться.
Таким образом жесткие ссылки имеют гораздо меньший круг применения, но обеспечивают безопасность при использовании, поскольку все жесткие ссылки не зависят от своего оригинала.
Как можно применить символические ссылки?
Символические ссылки могут иметь большое применение. Для примера, такие ссылки можно использовать при работе с виртуальными машинами или для более удобной работы с облачными хранилищами. Символьные ссылка позволяют не тратить ресурс жесткого диска, перемещая большие папки и файлы, а просто создавать символические ссылки, которые будут иметь такие же характеристики, полную работоспособность и другие возможности данных, куда была создана символьная ссылка.
Таким образом можно перемещать и синхронизировать объемные папки под видом символических ссылок в хранилища или перемещать программы с основного компьютера на виртуальную машину, без установки, траты места и с сохранением работоспособности утилиты. Это позволяет редактировать, работать или изменять структуру данных с виртуальной машины, синхронизировано с данными на реальном носителе ПК, при этом не открывая доступ с виртуальной машины на реальный компьютер.
Для примера, попробуем создать символическую ссылку на программу для восстановления данных RS Partition Recovery, чтобы сэкономить место, перенести её на другой диск и в то же время не переустанавливать утилиту в корень папки на новом системном диске.
Важно! Функции символьных ссылок доступны с Windows Vista. Более старые версии ОС не поддерживают работу с ними, поскольку в их функционале присутствует возможность создания только жестких и мягких (ярлыков) ссылок.
Процесс создания символической ссылки выглядит следующим образом:
Шаг 1. Работа с символическими ссылками происходит через стандартную утилиту Windows – «Командная строка». Нажимаем сочетание клавиш Win+R и в открывшемся окне вводим команду «cmd».
Шаг 2. В открывшемся окне вводим команду «mklink», при помощи которой можно получить описание функционала и возможные действия с символическими ссылками.
Шаг 3. Ознакомившись с ключами, попробуем создать символическую ссылку на каталог «C:\Program Files (x86)\Recovery Software\RS Partition Recovery 2.8» для этого нам потребуется ввести следующую команду «mklink /j «D:\recoverymk» «C:\Program Files (x86)\Recovery Software\RS Partition Recovery 2.8″».
Разберем подробнее каждый из пунктов команды.
- Mklink – основная команда связанная для создания символьных ссылок, её прописывают в начале.
- /j – ключ для создания символьный ссылки для каталога. Для создания файла следует использовать ключ /d. Для жесткой ссылки ключ /h.
- “D:\recoverymk” – путь куда будет сохранена символьная ссылка на каталог.
- «C:\Program Files (x86)\Recovery Software\RS Partition Recovery 2.8» – источник, откуда была создана символьная ссылка.
В нашем случае успешное создание символьной ссылки выглядит следующим образом:
Проверяем созданную ссылку и её работу в том месте, которое было указано при создании. В нашем случае это «D:\recoverymk».
Пробуем запустить утилиту через символическую ссылку.
Программа RS Partition Recovery (как и любые другие программы, архивы, игры и т.д) успешно заработала через символическую ссылку.
Также продемонстрируем наглядное пособие по созданию символической ссылки на конкретный файл. Для примера создадим символьную ссылку архива «карты», который расположен на диске C.
Для этого вводим «mklink /d «D:\карты» «C:\карты»»
В данном случае каждая часть команды отвечает за следующее:
- Mklink – основная команда для работы с ссылками.
- /d – ключ для создания символьных ссылок на конкретные файлы.
- «D:\карты» – место куда будет создана символьная ссылка.
- «C:\карты» – источник (оригинал) файла.
Важно! Для выполнения действий необходимо открыть командную строку от имени администратора. В противном случае утилита выдаст ошибку «Недостаточно прав».
Как упростить создание символических и жестких ссылок?
Для неподготовленных пользователей работа в командной строке может оказаться достаточно трудной и неудобной, поэтому многие предпочитают использовать специальный утилиты, добавляющие возможность быстрого создания ссылок различных типов из контекстного меню (меню, которое появляется при нажатии по файлу правой кнопкой мыши).
Одной из самых популярных программ для быстрого создания ссылок из контекстного меню является Link Shell Extension.
Процесс создания символической ссылки с дополнительными утилитами выглядит следующим образом:
Шаг 1. Нажимаем ПКМ по нужному объекту и выбираем пункт «Запомнить источник ссылки».
Шаг 2. Переходим в любой каталог, куда будет помещена ссылка, нажимаем ПКМ по пустому месту и выбираем пункт «Поместить как», после чего следует выбрать «Жесткую ссылку» или «Символическую ссылку».
Независимо от метода создания, ссылки будут функционировать в штатном режиме.
Жёсткой ссылкой (Шаблон:Lang-en) в UFS-совместимых файловых системах называется структурная составляющая файла — описывающий его элемент каталога.
Файл в UFS представляет собой структуру блоков данных на диске, имеющую уникальный индексный дескриптор (или i-node) и набор атрибутов (метаинформацию). Жёсткая ссылка связывает индексный дескриптор файла с каталогом и дает ему имя.
Свойства[]
У файла может быть несколько жёстких ссылок: в таком случае он будет фигурировать на диске одновременно в различных каталогах или под различными именами в одном каталоге. При редактировании файл через одну из ссылок на него, содержимое по другим ссылкам тоже изменится.
Количество жёстких ссылок файла сохраняется на уровне файловой системы в метаинформации. Файлы с нулевым количеством ссылок перестают существовать для системы и, со временем, будут перезаписаны физически. В файловых системах UNIX-подобных ОС и в NTFS при создании файла на него автоматически создаётся одна жёсткая ссылка (на то место файловой системы, в котором файл создаётся). Дополнительную ссылку в UNIX можно создать с помощью команды ln. Все ссылки одного файла равноправны и неотличимы друг от друга — нельзя сказать, что файл существует в таком-то каталоге, а в других местах есть лишь их копии. Удаление ссылки приводит к удалению файла лишь в том случае, когда это была последняя ссылка, любая из созданных, то есть все остальные жёсткие ссылки на него уже удалены
Большинство программ не различают жёсткие ссылки одного файла, даже системный вызов для удаления файла в UNIX называется Шаблон:Нп3, так как он предназначен для удаления жёсткой ссылки файла.
В связи с тем, что жёсткие ссылки ссылаются на индексный дескриптор, уникальный в пределах дискового раздела, создание жёсткой ссылки на файл в каталоге другого раздела невозможно. Для преодоления этого ограничения используются символьные (символические) ссылки.
Копирование файлов с жёсткими ссылками[]
При простом копировании файлов жёсткие ссылки разыменовываются, т.е. каждая ссылка превращается в самостоятельный файл. Для преодоления этого ограничения в UNIX-подобных системах используется конвейер из команд find и cpio:
(в каталоге-источнике) find -depth -print0 | cpio -p -v -d --null <каталог назначения>
(Ключ -depth заставляет find выводить имена каталогов после их содержимого, благодаря чему команда cpio сможет последовательно воссоздать дерево файлов. Ключ -print0 сохраняет пробелы в именах файлов, меняя разделитель строк на символ NULL (код 0x0). Ключи cpio: -p — режим конвейера, -d — создание каталогов, -v — отображение хода работы, —null — указывает на то, что разделителем строк выступает нулевой символ.)
Другие файловые системы[]
Жёсткие ссылки поддерживаются в файловой системе NTFS (начиная с Windows NT4[1]).
Жёсткая ссылка может создаваться только в пределах одного логического раздела и только для файлов.
В операционных системах Windows нет возможности создать жёсткую ссылку на каталог. Однако похожего эффекта можно добиться, используя точку соединения NTFS.
Команда для создания жёсткой ссылки в Windows:
fsutil hardlink create новая_ссылка источник
Пример:
fsutil hardlink create "C:\Distr\Installer-2.exe" "C:\Distr\Installer.exe"
Обратите внимание: существующее имя файла идёт вторым, а создаваемое — первым.
Также, начиная с Vista, в Windows появилась внутренняя команда mklink, позволяющая создавать жёсткие и мягкие ссылки, а также точки соединения.
Команда для создания жёсткой ссылки на файл в операционной системе Windows 7:
mklink /h новая_ссылка источник
Пример:
mklink /h "C:\Distr\Installer-2.exe" "C:\Distr\Installer.exe"
Утилиты для работы с жёсткими ссылками в Windows[]
- NTFS Link[2] — дополнение к оболочке Windows, позволяющее создавать жёсткие и символьные ссылки на томах NTFS. Существующие символьные ссылки помечаются в Проводнике дополнительным маленьким значком. Имеется исходный код, написан на языке Pascal.
- Link Shell Extension[3] — ещё одно дополнение к оболочке Windows. Последняя версия проверена и работает в Windows 10. Существующие жёсткие и символьные ссылки помечаются в Проводнике дополнительным маленьким значком. Файлы и каталоги с существующими ссылками имеют дополнительную закладку в «Свойствах» со списком всех жёстких ссылок и целевым местом символической ссылки.
- NTFS Links[4] — плагин для файлового менеджера Total Commander, позволяющий создавать жёсткие и символьные ссылки на томах NTFS из Total Commander.
- CreateHardLink[5] — ещё один плагин для Total Commander, позволяющий создавать жёсткие ссылки на томах NTFS из этой программы.
- NTLinks[6] — контекстный плагин для Total Commander, отображающий информацию об NTFS-ссылках.
- FAR Manager — файловый менеджер, позволяющий работать со ссылками на NTFS-разделах (создавать, просматривать, удалять жёсткие и символьные ссылки с помощью команды Шаблон:Key)
- Duplicate & Same Files Searcher[7] — утилита для Windows, позволяющая искать на жёстком диске одинаковые файлы и заменять их жёсткими ссылками NTFS. Утилита также находит существующие на диске жёсткие ссылки на один и тот же файл. Работает в Windows 2000/XP/Vista/7.
- FindDupe[8] — простая Windows-утилита для командной строки, позволяющая искать файлы и заменять их жёсткими ссылками NTFS.
- Duplicate File Hard Linker[9] — ещё одна простая Windows-утилита для командной строки, позволяющая искать файлы и заменять их жёсткими ссылками NTFS.
- KillCopy — утилита для ускоренного копирования в Windows, позволяет вместо копирования создать жёсткую ссылку.
- Junction[10] — Windows-утилита для командной строки от Марка Руссиновича, позволяет создавать и удалять точки соединения NTFS для файлов и каталогов.
- NTFS Links[11] — дополнение к оболочке Windows, схожее по функциональности с первым в списке дополнением.
Примечания[]
- ↑ Link Shell Extension. Архивировано из первоисточника 25 августа 2011.
- ↑ elsdoerfer.name NTFS-Link
- ↑ Link Shell Extension
- ↑ NTFS Links
- ↑ CreateHardLink
- ↑ NTLinks
- ↑ Duplicate & Same Files Searcher
- ↑ FindDupe
- ↑ Duplicate File Hard Linker
- ↑ Junction
- ↑ alax.info NTFS Links
См. также[]
- Символьная ссылка
- Точка соединения NTFS
- Команда ln в UNIX
Ссылки[]
- Работа с дисками и файловыми системами в FreeBSD, Алексей Федорчук, перепечатка цикла статей из iXBT (см. разделы FreeBSD: физика файловой системы, Файловая система FreeBSD: иерархия и монтирование)
- Секреты NTFS. Жесткие ссылки, Компьютерра OnLine
Компоненты Microsoft Windows | |
---|---|
Основные |
Aero • |
Службы управления |
Архивация и восстановление • |
Приложения |
Контакты • |
Игры |
Chess Titans • |
Ядро ОС |
Ntoskrnl.exe • |
Службы |
Autorun.inf • |
Файловые системы |
ReFS • |
Сервер |
Active Directory • |
Архитектура |
NT • |
Безопасность |
BitLocker • |
Совместимость |
Подсистема UNIX (Interix) • |