Символические и жесткие ссылки в Linux. Команда ln
Что такое символические и жесткие ссылки в Linux. Чем они отличаются. Как создавать ссылки. Использование команды ln.
Что такое ссылка на файл в Linux
Ссылка на файл в Linux — это указатель на файл. Если проводить аналогию с Windows, то ссылки чем-то похожи на ярлыки. То есть вы создаете ссылку, которая указывает на какой-либо файл или директорию, и можете разместить эту ссылку в другом каталоге. Обращаясь к такой ссылке, вы будете обращаться к настоящему файлу или каталогу.
Ссылки в Linux бывают двух типов: символические и жесткие. Не смотря на то, что оба типа называются ссылками, они имеют существенные отличия друг от друга. Поэтому очень важно понимать, как создавать и использовать тот или иной тип ссылок.
Что такое символические ссылки
Символическая ссылка (symbolic link) — это специальный файл, который является ссылкой на другой файл или каталог (их еще называют целевым файлом, целевым каталогом).
Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).
Важно понимать, что символическая ссылка не содержит в себе внутри копии самого файла, на которую она указывает. Она является всего лишь указателем на файл. Не смотря на это, символическая ссылка обладает собственными правами доступа, так как сама является небольшим файлом, который содержит путь до целевого файла.
Возвращаясь к аналогии с ярлыками в Windows, символические ссылки это своего рода ярлыки на файлы. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.
Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.
Если удалить файл, на который указывает ссылка, то сама ссылка не обновляется и остается на диске. При этом она указывает на уже несуществующий файл. Аналогично, если переименовать или переместить целевой файл, то ссылка не обновляется автоматически.
При создании символических ссылок можно указывать относительный путь до целевого файла. В таком случае ссылка считает, что относительный путь указан относительно каталога, в котором создана сама ссылка (но не относительно каталога, из которого она была создана).
Схематично отношение между файлом, символической ссылкой и данными, которые хранятся в файле, можно показать следующим образом:
Что такое жесткие ссылки
Жесткая ссылка (hard link) является своего рода синонимом для существующего файла. Когда вы создаете жесткую ссылку, создается дополнительный указатель на существующий файл, но не копия файла.
Жесткие ссылки выглядят в файловой структуре как еще один файл. Если вы создаете жесткую ссылку в том же каталоге, где находится целевой файл, то они должны иметь разные имена. Жесткая ссылка на файл должна находится в той же файловой системе, где и другие жесткие ссылки на этот файл.
Жесткие ссылки нельзя создавать для директорий.
Жесткая ссылка не может указывать на несуществующий файл.
Жесткие ссылки появились раньше, чем символические, но сейчас уже устаревают. В повседневной работе жесткие ссылки используются редко.
Схематично отношение между исходным файлом, жесткой ссылкой и данными можно показать следующей схемой:
Отличия символических ссылок от жестких
Кратко подведем итог, написанного выше.
Символическая ссылка:
Жесткая ссылка:
Как создавать ссылки в Linux. Команда ln
Для создания ссылок в Linux используется команда ln (от слова link).
Синтаксис команды ln :
Создание символических ссылок
Например, создадим в текущем каталоге символическую ссылку с именем mylink на файл /home/pingvinus/myfile :
Обратите внимание, что ссылка и целевой файл имеют разные inode (792300 и 787622. См. число в начале строки).
Если теперь удалить целевой файл, а затем попробовать просмотреть его содержимое, используя ссылку, то получим сообщение о том, что файл не найден:
Пример создания и использования символьной ссылки (при создании ссылки используется относительный путь до целевого файла, если такую ссылку переместить, то она будет невалидна):
Создание жестких ссылок
Например, создадим жесткую ссылку с именем hardlinktofile на файл myfile.txt :
Выведем список файлов:
Можно заметить, что hardlinktofile и myfile.txt имеют одинаковый inode=787622, так как являются фактически разными именами для одного файла (inode которого 787622).
Также видно, что на данный inode имеется 2 ссылки (см. цифру 2 в 3-м столбце). Если мы удалим исходный файл, то количество ссылок на него уменьшается на 1, то есть на самом деле файл не удаляется, так как на него больше, чем 1 ссылка. И мы по прежнему можем работать с файлом по имени hardlinktofile.
Обратите внимание, что после выполнения команды rm, количество ссылок на файл стало равно 1.
Пример создания и использования жесткой ссылки:
Как удалить ссылку
Ссылки, как и обычные файлы, можно удалять, используя команду rm :
Создание ссылок через файловый менеджер
Ссылка создается в том же каталоге, где находится целевой файл. После создания ссылку можно переместить в другой каталог.
Резюме
Символические и жесткие ссылки Linux
В Linux существует два типа ссылок на файлы. Это символические и жесткие ссылки Linux. Они очень сильно отличаются и каждый тип имеет очень важное значение. В этой небольшой статье мы рассмотрим чем же отличаются эти ссылки, зачем они нужны, а также как создавать ссылки на файлы в Linux.
Символические ссылки
Символические ссылки более всего похожи на обычные ярлыки. Они содержат адрес нужного файла в вашей файловой системе. Когда вы пытаетесь открыть такую ссылку, то открывается целевой файл или папка. Главное ее отличие от жестких ссылок в том, что при удалении целевого файла ссылка останется, но она будет указывать в никуда, поскольку файла на самом деле больше нет.
Вот основные особенности символических ссылок:
Теперь давайте рассмотрим жесткие ссылки.
Жесткие ссылки
Использование ссылок в Linux
Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:
$ ln опции файл_источник файл_ссылки
Рассмотрим опции утилиты:
Создание символических ссылок
Сначала создайте папку test и перейдите в нее:
mkdir test && cd test
Затем создайте файл с именем source с каким-либо текстом:
echo «текст текст текст текст» > source
$ cat source
Попробуем посмотреть содержимое файла по ссылке:
Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:
Несмотря на то, что содержимое одинаковое, здесь мы видим, что адрес иноды и права доступа к файлам отличаются, кроме того, явно показано что это символическая ссылка Linux.
Теперь удалите исходный файл и посмотрите что будет:
Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.
Создание жестких ссылок
Снова создайте файл source с произвольным текстом:
echo «текст текст текст текст» > source
$ cat source
Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:
ln source hardlink
Посмотрите содержимое файла:
Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:
Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:
Затем посмотрите содержимое:
Как видите, ничего не произошло и ссылка по-прежнему указывает на нужный участок диска, это главное отличие жесткой ссылки от символической. Мы можем сделать вывод, что жесткая ссылка linux это обычный файл. Каждый файл имеет как минимум одну ссылку, но для некоторых мы можем создать несколько ссылок.
Выводы
Это все, что вам было необходимо знать про символические и жесткие ссылки linux. Надеюсь, вы получили общее представление об этих возможностях файловой системы и сможете использовать их для решения своих задач.
На завершение видео про ссылки в Linux:
Использование символических и жестких ссылок в Windows
Ниже мы разберем понятие жестких и символических ссылок в 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″».
Разберем подробнее каждый из пунктов команды.
В нашем случае успешное создание символьной ссылки выглядит следующим образом:
Проверяем созданную ссылку и её работу в том месте, которое было указано при создании. В нашем случае это «D:\recoverymk».
Пробуем запустить утилиту через символическую ссылку.
Программа RS Partition Recovery (как и любые другие программы, архивы, игры и т.д) успешно заработала через символическую ссылку.
Также продемонстрируем наглядное пособие по созданию символической ссылки на конкретный файл. Для примера создадим символьную ссылку архива «карты», который расположен на диске C.
Для этого вводим «mklink /d «D:\карты» «C:\карты»»
В данном случае каждая часть команды отвечает за следующее:
Важно! Для выполнения действий необходимо открыть командную строку от имени администратора. В противном случае утилита выдаст ошибку «Недостаточно прав».
Как упростить создание символических и жестких ссылок?
Для неподготовленных пользователей работа в командной строке может оказаться достаточно трудной и неудобной, поэтому многие предпочитают использовать специальный утилиты, добавляющие возможность быстрого создания ссылок различных типов из контекстного меню (меню, которое появляется при нажатии по файлу правой кнопкой мыши).
Одной из самых популярных программ для быстрого создания ссылок из контекстного меню является Link Shell Extension.
Процесс создания символической ссылки с дополнительными утилитами выглядит следующим образом:
Шаг 1. Нажимаем ПКМ по нужному объекту и выбираем пункт «Запомнить источник ссылки».
Шаг 2. Переходим в любой каталог, куда будет помещена ссылка, нажимаем ПКМ по пустому месту и выбираем пункт «Поместить как», после чего следует выбрать «Жесткую ссылку» или «Символическую ссылку».
Независимо от метода создания, ссылки будут функционировать в штатном режиме.
Часто задаваемые вопросы
Это сильно зависит от емкости вашего жесткого диска и производительности вашего компьютера. В основном, большинство операций восстановления жесткого диска можно выполнить примерно за 3-12 часов для жесткого диска объемом 1 ТБ в обычных условиях.
Если файл не открывается, это означает, что файл был поврежден или испорчен до восстановления.
Используйте функцию «Предварительного просмотра» для оценки качества восстанавливаемого файла.
Когда вы пытаетесь получить доступ к диску, то получаете сообщение диск «X: \ не доступен». или «Вам нужно отформатировать раздел на диске X:», структура каталога вашего диска может быть повреждена. В большинстве случаев данные, вероятно, все еще остаются доступными. Просто запустите программу для восстановления данных и отсканируйте нужный раздел, чтобы вернуть их.
Пожалуйста, используйте бесплатные версии программ, с которыми вы можете проанализировать носитель и просмотреть файлы, доступные для восстановления.
Сохранить их можно после регистрации программы – повторное сканирование для этого не потребуется.
Символическая ссылка — что это и как создать?
Как пользователь компьютера, если бы вам пришлось определить ярлык, вы бы сказали, что это указатель на файл, папку или приложение, верно? Правильно.
Но это короткое определение не рассказывает всей истории вообще. Это означает, что все ярлыки одинаковы, когда они не совпадают. У вас есть почти несколько типов ярлыков. Мы сосредоточимся на символической ссылке ниже. Это также называется символической ссылкой или мягкой ссылкой, и мы будем использовать термины взаимозаменяемо.
Давайте посмотрим, что такое символическая ссылка, как создать символическую ссылку в Linux, а также в macOS и Windows, зачем нужен этот специальный тип ярлыков и многое другое.
Что такое символическая ссылка?
Это правда, что символическая ссылка является файлом ярлыка. Но он отличается от стандартного ярлыка, который, скажем, установщик программы разместил на рабочем столе Windows, чтобы упростить запуск программы.
Конечно, нажатие на ярлык любого типа открывает связанный объект, но то, что происходит под капотом, в обоих случаях различно, как мы увидим далее.
В то время как стандартный ярлык указывает на определенный объект, символическая ссылка заставляет его выглядеть так, как будто связанный объект действительно существует. Ваш компьютер и приложения на нем будут читать символическую ссылку как сам целевой объект.
В macOS вы получаете подтверждение в виде сообщения «файл существует», которое появляется, когда вы пытаетесь создать символическую ссылку в том же месте, что и исходный объект. Даже если вы попытаетесь переместить символическую ссылку в то же место после ее создания в другом месте, она будет переименована в копию.
Симлинки против стандартных ярлыков
Допустим, у вас есть определенная папка на жестком диске, которую вы хотите синхронизировать с Dropbox, не перемещая саму папку в Dropbox.
В этом случае создание ярлыка для папки в Dropbox не имеет смысла. Ярлык будет работать на устройстве, на котором вы его создали. Dropbox также синхронизирует ярлык. Но синхронизированный файл ярлыков недействителен, когда вы обращаетесь к нему с другого компьютера, т.е. он никуда не ведет.
Теперь, если бы этот ярлык был символической ссылкой, вы бы не столкнулись с этой проблемой. Это потому, что Dropbox считывает символическую ссылку как фактическую папку и в результате синхронизирует данные из этой папки. После этого вы сможете получить доступ к папке и ее содержимому на всех ваших устройствах, на которых включена синхронизация Dropbox, даже если исходная папка не является частью вашего Dropbox.
Имейте в виду, что, будь то обычный ярлык или символическая ссылка, его удаление никак не повлияет на исходный объект.
Зачем вам нужны ссылки?
В общем случае рекомендуется создавать символические ссылки вместо ярлыков, если вы хотите:
Скорее всего, вы встретите много других вариантов использования символических ссылок.
Как создать символические ссылки
Вы можете создавать программные ссылки, используя терминал или командную строку. Мы перейдем к инструментам «укажи и щелкни» позже, если тебе неудобно возиться с терминалом.
В Linux и MacOS
В Linux вы можете создать символическую ссылку для файла или папки с помощью этой команды терминала:
Эта же команда работает и в macOS, поскольку macOS — это операционная система на основе UNIX, такая как Linux.
Смотрите скриншот выше для примера команды.
Встроенный файловый менеджер в определенных средах рабочего стола Linux позволяет создавать программную ссылку через контекстное меню, поэтому вы можете проверить, есть ли в вашем приложении для просмотра файлов эта опция.
У популярного файлового менеджера Nautilus, поставляемого в комплекте с различными дистрибутивами Linux, была опция меню Make Link, которая теперь исчезла. Но вы все равно можете создать символическую ссылку в Nautilus, удерживая клавиши Ctrl и Shift и перетащив целевой файл в то место, где вы хотите, чтобы символическая ссылка отображалась. Не волнуйтесь, исходный файл останется на месте.
На винде
Вам нужно открыть окно командной строки от имени администратора и ввести следующую команду, чтобы создать символическую ссылку:
Для символических ссылок на каталоги вы должны немного настроить команду, используя флаг /d:
Если вы не хотите работать с командной строкой, вы можете использовать графический инструмент под названием Link Shell Extension для создания символических ссылок. Это одно из лучших расширений Windows File Explorer для управления файлами.
Примечание. Система не будет препятствовать созданию символической ссылки внутри символической ссылки, но лучше избегать этого. В противном случае вы создадите бесконечный цикл, который может вызвать проблемы для общесистемных сервисов, таких как антивирусные сканеры.
Симлинки против псевдонимов в macOS
Если вы когда-либо создавали псевдонимы в macOS, вы заметите, что они ведут себя почти как символические ссылки. Оба типа ссылок ссылаются на путь к связанному файлу или папке.
Разница в том, что псевдоним также помечает связанный объект с идентификатором, называемым inode (индексный узел). Этот идентификатор уникален для объекта и следует за ним по всей файловой системе.
Вот почему псевдоним будет работать нормально, даже если вы переместите его цель в другое место. Попробуйте это с символической ссылкой, и вы столкнетесь с ошибкой. (Вы можете без проблем перемещать псевдоним и символическую ссылку, если только вы не имеете дело с файлами, защищенными системой.)
Конечно, оба типа ярлыков окажутся бесполезными, если вы удалите исходный файл или переименуете любую из папок выше в иерархии.
Не можете определить разницу между псевдонимом и символической ссылкой, поскольку вы удалили тег псевдонима из имени файла псевдонима?
Откройте инспектор файлов или панель «Информация» для каждого ярлыка и посмотрите размер файла в разделе «Общие». Если это говорит (ноль байтов на диске), вы имеете дело с символической ссылкой.
Символьные ссылки (в текущей папке) также проявятся при использовании этой команды терминала:
Команда работает и в Linux, и вы увидите символическую ссылку, указывающую на местоположение исходного объекта.
Симлинки лучше, чем ярлыки
Поначалу символические ссылки могут показаться запутанными, но если вы потратите время на их понимание, вы поймете, что в конце концов их довольно просто использовать!
































