Жёсткая ссылка
Жёсткой ссылкой (англ. hard link) в UFS-совместимых файловых системах называется структурная составляющая файла — описывающий его элемент каталога.
Файл в UFS представляет собой структуру блоков данных на диске, имеющую уникальный индексный дескриптор (inode) и набор атрибутов (метаинформацию). Жёсткая ссылка связывает индексный дескриптор файла с каталогом и даёт ему имя.
Свойства
У файла может быть несколько жёстких ссылок: в таком случае он будет фигурировать на диске одновременно в различных каталогах или под различными именами в одном каталоге. При редактировании файла через одну из ссылок на него, содержимое по другим ссылкам тоже изменится.
Количество жёстких ссылок файла сохраняется на уровне файловой системы в метаинформации. Файлы с нулевым количеством ссылок перестают существовать для системы и, со временем, будут перезаписаны физически. В файловых системах
Большинство программ не различают жёсткие ссылки одного файла, даже системный вызов для удаления файла в UNIX называется unlink[англ.], так как он предназначен для удаления жёсткой ссылки файла.
В связи с тем, что жёсткие ссылки ссылаются на индексный дескриптор, уникальный в пределах дискового раздела, создание жёсткой ссылки на файл в каталоге другого раздела невозможно. Для преодоления этого ограничения используются мягкие ссылки.
Копирование файлов с жёсткими ссылками
При простом копировании файлов жёсткие ссылки разыменовываются, то есть каждая ссылка превращается в самостоятельный файл. Для преодоления этого ограничения в 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-разделах (создавать, просматривать, удалять жёсткие и символьные ссылки с помощью команды Alt+F6)
- Duplicate Files Search & Link[7] — утилита для Windows, позволяющая искать на жёстком диске одинаковые файлы и заменять их жёсткими ссылками NTFS. Утилита также находит существующие на диске жёсткие ссылки на один и тот же файл. Работает в Windows 2000/XP/Vista/7/10/11.
- FindDupe[8] — простая Windows-утилита для командной строки, позволяющая искать файлы и заменять их жёсткими ссылками NTFS.
- Duplicate File Hard Linker[9] — ещё одна простая Windows-утилита для командной строки, позволяющая искать файлы и заменять их жёсткими ссылками NTFS.
- KillCopy — утилита для ускоренного копирования в Windows, позволяет вместо копирования создать жёсткую ссылку.
- NTFS Links[10] — дополнение к оболочке Windows, схожее по функциональности с первым в списке дополнением.
См. также
- Символьная ссылка
- Точка соединения NTFS
- Команда ln в UNIX
Примечания
- ↑ Link Shell Extension . Архивировано 24 августа 2011 года.
- ↑ elsdoerfer.name NTFS-Link . Дата обращения: 6 февраля 2011. Архивировано 23 февраля 2011 года.
- ↑ Link Shell Extension . Дата обращения: 23 сентября 2009. Архивировано 24 августа 2011 года.
- ↑ NTFS Links . Дата обращения: 18 марта 2009. Архивировано 2 апреля 2009 года.
- ↑ CreateHardLink . Дата обращения: 18 марта 2009. Архивировано 6 января 2009 года.
- ↑ NTLinks . Дата обращения: 24 апреля 2012. Архивировано 3 мая 2012 года.
- ↑ Duplicate Files Search & Link . Дата обращения: 17 декабря 2009. Архивировано 10 марта 2010 года.
- ↑ FindDupe . Дата обращения: 21 декабря 2009. Архивировано 13 июня 2010 года.
- ↑ Duplicate File Hard Linker . Дата обращения: 7 февраля 2010. Архивировано 31 марта 2010 года.
- ↑ alax.info NTFS Links . Дата обращения: 11 июня 2014. Архивировано 14 июля 2014 года.
Ссылки
- Работа с дисками и файловыми системами в FreeBSD, Алексей Федорчук, перепечатка цикла статей из )
- Секреты NTFS. Жесткие ссылки, Компьютерра OnLine