Жесткие и символические ссылки в Windows

Используя жёсткие ссылки файлов и каталогов, можно иметь несколько различных имён файлов или каталогов, ссылающихся на одни и те же данные. В 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

Похожие записи

Обновить bash на Windows 10

Если, запуская подсистему Linux мы получаем сообщение о необходимости обновить пакеты, то можно решить проблему удалив подсистему и поставив заново. Но тогда удалятся и данные, а можно данные сохранить, проведя процедуру upgrade подсистемы linux.

Перенести базы PostgreSQL на другой диск Windows

Если у вас установлен Postgres в конфигурации по умолчанию, то его базы хранятся в Program Files. Если есть необходимость освободить место на системном диске C, то можно перенести базы данных Postgres на другой диск.

Cannot start virtual machine on Virtualbox

При сообщении Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT). отключить компонент Windows - Hyper-V и перезагрузиться.