Что такое жесткая ссылка
Перейти к содержимому

Что такое жесткая ссылка

  • автор:

mklink

Создает символьную или жесткую ссылку на каталог или файл.

Синтаксис

mklink [[/d] | [/h] | [/j]]

Параметры

Параметр Описание
/d Создает символьную ссылку каталога. По умолчанию эта команда создает символьную ссылку на файл.
/h Создает жесткую ссылку вместо символьной ссылки.
/J Создает соединение каталогов.
Указывает имя создаваемой символьной ссылки.
Указывает путь (относительный или абсолютный), к которому ссылается новая символьная ссылка.
/? Отображение справки в командной строке.

Примеры

Чтобы создать и удалить символьную ссылку с именем MyFolder из корневого каталога в каталог \Users\User1\Documents, а также жесткую ссылку с именем Myfile.file к файлу example.file, расположенному в каталоге, введите:

mklink /d \MyFolder \Users\User1\Documents mklink /h \MyFile.file \User1\Documents\example.file rd \MyFolder del \MyFile.file 

Дополнительные ссылки

  • Условные обозначения синтаксиса команд командной строки
  • команда del
  • Команда rd
  • Создание элемента в Windows PowerShell

Hard links and junctions

The NTFS file system supports three types of file links: hard links, junctions, and symbolic links. This article is an overview of hard links and junctions. For information about symbolic links, see Create symbolic links.

Hard links

A hard link is the file-system representation of a file by which more than one path references a single file in the same volume. To create a hard link, use the CreateHardLinkA function.

Any changes made to a hard-linked file are instantly visible to applications that access it through the links that reference it. The attributes on the file are reflected in every hard link to that file, and changes to that file’s attributes propagate to all the hard links. However, the directory entry size and attribute information of the file are visibly updated only at the link through which the change was made. For example, if you clear the read-only attribute flag on a particular hard link so you can delete that hard link, and there are multiple hard links to the file, the other hard links display that the read-only attribute is still set, which isn’t true. To change the file back to the read-only state, you must set the read-only flag on the file from one of its remaining hard links.

For example, in a system where C: and D: are local drives and Z: is a network drive mapped to \\fred\share, the following references are permitted as a hard link:

  • C:\dira\ethel.txt linked to C:\dirb\dirc\lucy.txt
  • D:\dir1\tinker.txt linked to D:\dir2\dirx\bell.txt
  • C:\diry\bob.bak linked to C:\dir2\mina.txt

The following references aren’t permitted:

  • C:\dira linked to C:\dirb
  • C:\dira\ethel.txt linked to D:\dirb\lucy.txt
  • C:\dira\ethel.txt linked to Z:\dirb\lucy.txt

To delete a hard link, use the DeleteFileA function. You can delete hard links in any order regardless of the order in which they’re created.

Junctions

A junction (also called a soft link) differs from a hard link in that the storage objects it references are separate directories. A junction can also link directories located on different local volumes on the same computer. Otherwise, junctions operate identically to hard links. Junctions are implemented through reparse points.

Assuming the same conditions in the Hard Links section, the following references are permitted as junctions:

The following references aren’t permitted:

  • C:\dira\one.txt linked to C:\dirb\two.txt
  • C:\dir1 linked to Z:\dir2

Жесткие связи и соединения

Файловая система NTFS поддерживает три типа файловых ссылок: жесткие ссылки, соединения и символические ссылки. В этой статье представлен обзор жестких ссылок и связей. Сведения о символьных ссылках см. в разделе Создание символьных ссылок.

Жесткие связи.

Жесткая ссылка — это представление файла в файловой системе, по которому несколько путей ссылается на один файл в одном томе. Чтобы создать жесткую ссылку, используйте функцию CreateHardLinkA .

Любые изменения, внесенные в файл с жесткой связью, мгновенно видны приложениям, которые обращаются к нему по ссылкам, ссылающимся на него. Атрибуты файла отражаются в каждой жесткой ссылке на этот файл, а изменения атрибутов этого файла распространяются на все жесткие ссылки. Однако размер записи в каталоге и сведения об атрибутах файла заметно обновляются только по ссылке, по которой было внесено изменение. Например, если снять флаг атрибута только для чтения для определенной жесткой ссылки, чтобы можно было удалить эту жесткую ссылку, при наличии нескольких жестких ссылок на файл другие жесткие ссылки будут отображаться, что атрибут только для чтения по-прежнему задан, что не соответствует действительности. Чтобы вернуть файл в состояние только для чтения, необходимо установить для файла флаг только для чтения из одной из оставшихся жестких ссылок.

Например, в системе, где C: и D: являются локальными дисками, а Z: — это сетевой диск, сопоставленный с \\fred\share, в качестве жесткой ссылки разрешены следующие ссылки:

  • C:\dira\ethel.txt , связанные с C:\dirb\dirc\lucy.txt
  • D:\dir1\tinker.txt , связанные с D:\dir2\dirx\bell.txt
  • C:\diry\bob.bak связан с C:\dir2\mina.txt

Следующие ссылки не допускаются:

  • C:\dira , связанный с C:\dirb
  • C:\dira\ethel.txt , связанные с D:\dirb\lucy.txt
  • C:\dira\ethel.txt , связанные с Z:\dirb\lucy.txt

Чтобы удалить жесткую ссылку, используйте функцию DeleteFileA . Вы можете удалять жесткие ссылки в любом порядке, независимо от порядка их создания.

Соединения

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

При условии, что в разделе Жесткие ссылки используются те же условия, в качестве соединений разрешены следующие ссылки:

  • C:\dira , связанный с C:\dirb\dirc
  • C:\dirx , связанный с D:\diry

Следующие ссылки не допускаются:

  • C:\dira\one.txt , связанные с C:\dirb\two.txt
  • C:\dir1 , связанный с Z:\dir2

Записки IT специалиста

Работаем с жесткими и символическими ссылками в Windows

  • Автор: Уваров А.С.
  • 11.05.2022

Жесткие и символические ссылки давно знакомы и активно используются Linux-администраторами, в то время как их Windows коллеги используют их гораздо реже, а некоторые вообще не знают о такой возможности. Тем не менее такая возможность в Windows существует и позволяет значительно упростить некоторые сценарии работы с папками и файлами. В данной статье мы рассмотрим все виды ссылок, доступные в среде ОС Windows, а также разные способы работы с ними, начиная от командной строки и заканчивая PowerShell.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Жесткие ссылки (HardLink)

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

Мы можем переименовывать, копировать, перемещать (в пределах логического тома) ссылки — размер занимаемого места при этом не изменится. При удалении ссылок файл продолжает существовать до тех пор, пока не будет удалена последняя жесткая ссылка на него. Фактически отличить, где находится оригинальный файл, а где жесткая ссылка невозможно, по сути, файл на разделе это и есть жесткая ссылка.

Жесткая ссылка может существовать только в пределах логического тома, поддерживается файловыми системами NTFS и ReFS начиная со сборки 19536.

Для создания жесткой ссылки можно воспользоваться утилитой mklink:

mklink /H C:\Folder1\LinkFileName C:\Folder\FileName

Где ключ /H предписывает создать именно жесткую ссылку, далее следует путь к новому файлу и целевому файлу, на который мы делаем ссылку. Путь можно указывать как абсолютные, так и относительные, в имени создаваемого файла не забывайте указывать расширение.

windows-hardlink-and-symlink-001.png

Ссылки можно создавать и при помощи PowerShell, для этого воспользуйтесь командой:

New-Item -ItemType HardLink -Path C:\Folder1\LinkFileName -Target C:\Folder\FileName

Команда другая, но принцип тот же самый: -ItemType — тип создаваемой ссылки, в нашем случае жесткая ссылка, -Path — путь к создаваемому файлу ссылки, -Target — файл на который мы делаем ссылку.

windows-hardlink-and-symlink-002.png

Можно ли сделать жесткую ссылку на директорию? Нет, только на файлы.

Вроде бы все понятно, но если внимательный читатель заглянет в свойства папки с жесткой ссылкой, то он увидит, что ее размер равен исходному файлу, если сделаем в ней еще одну жесткую ссылку — двум исходным файлам. Как так? Не стоит переживать, все нормально. Для операционной системы жесткая ссылка ничем не отличается от обычного файла и при подсчете свободного места учитывается размер каждой ссылки, но на самом деле на диске хранится единственная копия. В этом можно убедиться, если одновременно с созданием жестких ссылок контролировать свободное место на диске.

При желании мы можем провернуть даже такой фокус:

windows-hardlink-and-symlink-003.png

Какой вывод можно сделать из того, что мы увидели и где нам могут пригодиться жесткие ссылки? Прежде всего для предоставления пользователям доступа к объемным архивам, образам или инсталляционным пакетам. Скажем у вас есть файловый сервер и несколько отделов, каждому из которых нужно предоставить доступ к одному и тому же большому файлу. При этом вы можете не бояться, что кто-то удалит файл, он удалит его только у себя в директории, для остальных пользователей он останется доступен.

Но при этом надо очень внимательно относиться к вопросу одновременного редактирования файла, так как он существует в единственном экземпляре, но доступен по множеству ссылок в этом сценарии могут возникнуть самые разные коллизии.

Точки соединения (Junction)

Очень старая технология, поддерживаемая еще начиная с Windows 2000, позволяет сделать один из каталогов псевдонимом другого каталога. Чем-то напоминает символические ссылки, но в крайне упрощенном варианте. В качестве цели можно использовать только локальные папки, но при этом нет ограничения по размещению их на одном томе. Т.е. целевая папка может находиться на диске C:, а точка соединения для нее на диске D: и все будет работать. Точки соединения поддерживаются файловыми системами NTFS и ReFS.

Для создания точки соединения можно использовать mklink:

mklink /J D:\LinkFolder C:\Folder

Ключ /J указывает на создание точки соединения, далее следует папка каталога-псевдонима и папка целевого каталога. При любом изменении целевого каталога (перемещение, переименование, удаление) точка соединения перестает работать.

Обратите внимание, что данная папка в проводнике отображается как ярлык, а выводе команды dir как точка соединения.

windows-hardlink-and-symlink-004.png

Это же действие в 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:

windows-hardlink-and-symlink-005.png

Для создания символической ссылки на директорию добавьте ключ /D:

mklink /D D:\LinkFolder C:\Folder

В PowerShell все проще, тип объекта будет определен автоматически:

New-Item -ItemType SymbolicLink -Path C:\Folder1\LinkFileName -Target C:\Folder\FileName

Если в качестве цели указан файл — будет создана ссылка на файл, каталог — ссылка на каталог.

При переименовании, перемещении или удалении исходного файла или каталога все символические ссылки работать перестанут:

windows-hardlink-and-symlink-006.png

При копировании символической ссылки за пределы локального тома будет скопирован исходный файл, даже если целевой том поддерживает работу со ссылками, но это не мешает создать новую ссылку на другом томе.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *