Linux жесткие мягкие ссылки

Мягкие и жесткие ссылки в Linux

img

Мы уже рассказывали про мягкие и жесткие ссылки в Linux, и данная статья посвящена их более глубокому изучению. Ссылки в операционной системе Linux бывают 2-х типов мягкие и жесткие. Если провести аналогию с операционной системой Windows, то там мы в основном работаем с мягкими ссылками, символическими ярлыками. Но в операционной системе Windows есть и жесткие ссылки, просто они очень глубоко спрятаны внутри операционной системы. В статье будет рассказано:

  • Как идентифицировать тип ссылки
  • В чем разница между мягкой и жесткой ссылкой
  • В чем разница между копирование и создание ссылки

Итак, смотрим в домашнюю директорию пользователя. Я заранее создал файл и 2 ссылки жесткую и мягкую указывающие на данный файл.

ls -l

Основной файл file.txt , жесткая ссылка hard.txt на файл file.txt и мягкая ссылка soft.txt на файл file.txt . Как можно заметить символические (мягкие) ссылки в оболочке, обычно, подкрашиваются ярко голубым цветом и показывают на какой файл она ссылается. Можно еще интересную вещь заменить основной файл весит 38 килобайт и жесткая ссылка столько же весит. Мягкая ссылка – это всего лишь ярлык и весит всего 8 килобайт. Посмотрим, что внутри файла основного. Файл содержит фразу.

cat file.txt

Команда ls с ключем –li может отображать inodes. В результате ввода команды появился еще один столбец впереди. В данном столбце и отображается номер inodes, т.е идентификатор файла, индексный дескриптор, местонахождение файла на диске, метка файла.

ls -li

В нашем же случае номера inodes у файла и у жесткой ссылки совпадает. Т.е жесткая ссылка указывает на то же место, где находиться основной файл, в то же самое место на жестком диске. Мягкая же ссылка, сама по себе является отдельным файлом и у нее совершенно другой inode. А также можно видеть, что у данного файла в правах появилась буква l , которая указывает что это символьная ссылка. Причем попробовав просмотреть содержимое жесткой и мягкой ссылки, мы получим одинаковый результат. Все показывает на один и тот же файл.

cat soft/hard

Если мы попробуем дописать, какие-нибудь изменения в файл. Например, echo Hello>> file.txt

Получим один и тот же результат. Возьмем и переименуем наш основной файл mv file.txt newfile.txt .

Читайте также:  Linux mint system tray

mv file.txt newfile.txt

Теперь мы можем увидеть, что ссылка мягкая у нас стала красной (Битой). Потому что, мягкие ссылки опираются на имя файла. Причем не просто на имя файла, а на полное имя файла. А жесткая ссылка, как была, так и осталась работоспособной. Потому, что она указывает на один и тот же inode, потому что она указывает на то место где данный файл находиться. И если мы утилитой cat скажем показать жесткую ссылку в выводе мы получим исходный файл, а мягкая ссылка выдаст нам ошибку. Основная разница между жесткой ссылкой и мягкой, заключается в том, что мягкая опирается на имя файла. А жесткая указывает на физическое место, определяемое дескриптором где находиться файл.

Создаются такие ссылки достаточно просто, командой ln с указанием основного файла и ссылки. Например, ln file.txt hard.txt . При создании мягкой ссылки добавляется ключик –s . Будет выглядеть примерно так — ln –s file.txt soft.txt . При создании ссылки, можно объекты указывать без расширения.

Т.к. жесткая ссылка у нас привязана к inode, то ее нельзя использовать с несколькими файловыми системами. Если у вас есть другой жесткий диск премонтированый в данную файловую систему, то вы не сможете создать жесткую ссылку из данной системы к премонтированному жесткому диску. Потому, что это все опирается на inode, а inode справедливы для конкретной файловой системе. Поэтому в операционной системе Windows все ссылки по умолчанию мягкие. Пригодиться это может где угодно. Например, мы в своей домашней директории можем создать ссылки на все свои важные папки или данные. Очень часто символические ссылки используются для администрирования. Операционной системы Linux. Например, для команд, если пользователь не хочет знать номер версии или дополнительные ключи, он может просто получать доступ к различным версиям просто используя ссылки.

Также стоит упомянуть ситуацию с папками.

Создадим папку — mkdir Folder . Попробуем создать жесткую ссылку на данную папку — ln Folder folder.lnk , данная команда выдаст ошибку указывая на то, что нельзя создать жесткую ссылку на папку, но, а если мы захотим создать мягкую (символическую ссылку), то проблемы не возникнет — ln –s Folder folder.lnk .

ln –s Folder folder.lnk

Хорошим тоном при создании ссылок символических это указание на полный путь файлу, т.к привязка идет к имени файла и при создании если указать относительны, мы можем столкнуться с ситуацией, когда получившаяся ссылка будет битой. Например, когда мы хотим создать ссылку на файл и положить ее во внутрь другие папки ln –s /home/siadmin/file.txt Folder/ . данный вариант будет рабочим.

Читайте также:  Linux уменьшить использование swap

Разница между копирование файла и созданием ссылки. Когда копируем файл мы фактически создаем другой файл со всем его содержимым, а когда мы создаем ссылку – это некий ярлык на файл. Скопируем файл file.txt в newfile.txt и на file.txt создадим жесткую ссылку. Когда мы смотрим вывод команды ls –l по папке то визуально копию мы не отличим от жесткой ссылки, если мы конечно об этом не знаем. А отличие мы увидим только если мы посмотрим на inodes.

ls -li

Как мы видим номера inode у файла и жесткой ссылки совпадают, причем мы не знаем, что из них первично. Можно заметить столбец с цифрами после указания прав на объекты, он показывает сколько ссылок жестких есть на данный inode. Создадим еще одну жесткую ссылку ln file.txt hard1.txt . Теперь если сделать вывод ls –li , то мы увидим цифру 3. Почему так происходит? Удалением файла у нас по умолчанию является действие, которое обнуляет количество всех жестких ссылок. Если мы удалим файл исходный file.txt . и посмотрим вывод то мы увидим, что если есть мягкие ссылки, то они прекратят работать, а файлы hard.txt и hard1.txt остались.

3 и 2

Более того, если обратиться к этим жестким ссылкам, например, с помощью утилиты просмотра cat hard.txt , то мы увидим текст, который был у нас изначально в файле.

cat hard.txt

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

Источник

Команда Ln: как создавать символические ссылки в Linux

img

Символические ссылки используются в Linux для управления файлами и их сопоставления.

В этом руководстве вы узнаете, как использовать команду ln для создания символических ссылок в Linux.

Команда Ln

Команда Ln для создания символических ссылок

Чтобы использовать команду ln, откройте окно терминала и введите команду в следующем формате:

  • По умолчанию команда ln создает hard link (жесткая ссылка).
  • Используйте параметр -s , чтобы создать символическую ссылку, она же soft link.
  • Параметр -f заставит команду перезаписать уже существующий файл.
  • Source — это файл или каталог, на который делается ссылка.
  • Destination — это место для сохранения ссылки — если это поле не заполнено, символическая ссылка сохраняется в текущем рабочем каталоге.

Например, создайте символическую ссылку с помощью:

ln -s test_file.txt link_file.txt

Это создает символическую ссылку link file.text , которая указывает на testfile.txt .

Читайте также:  Серийные номера жестких дисков linux

Чтобы проверить, создана ли символическая ссылка, используйте команду ls :

ls -l link_file.txt

Создать символическую ссылку на каталог Linux

Символическая ссылка может относиться к каталогу. Чтобы создать символическую ссылку на каталог в Linux:

ln -s /mnt/external_drive/stock_photos ~/stock_photos

В этом примере создается символическая ссылка с именем stock_photos в домашнем каталоге ~ / . Ссылка относится к каталогу stock_photos на внешнем диске external_drive .

ln -s /mnt/external_drive/stock_photos ~/stock_photos

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

Принудительно перезаписать символические ссылки

Вы можете получить сообщение об ошибке, как показано на изображении ниже:

File exists

Сообщение об ошибке означает, что в месте назначения уже есть файл с именем link_file.txt . Используйте параметр -f , чтобы система перезаписывала целевую ссылку:

ln -sf test_file.txt link_file.txt

ln -sf test_file.txt link_file.txt

Удаление ссылок

Если исходный файл будет перемещен, удален или станет недоступным (например, сервер отключится), ссылку нельзя будет использовать. Чтобы удалить символическую ссылку, используйте команду rm (remove) или unlink :

rm link_file.txt unlink link_file.txt

No such file

Команду ln можно использовать для создания двух разных типов ссылок:

Символическая ссылка, иногда называемая мягкой ссылкой или soft link, указывает на расположение или путь к исходному файлу. Она работает как гиперссылка в Интернете.

Вот несколько важных аспектов символической ссылки:

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

Когда файл хранится на жестком диске, происходит несколько вещей:

  • Данные физически записываются на диск.
  • Создается справочный файл, называемый индексом, который указывает на расположение данных.
  • Имя файла создается для ссылки на данные inode.

Жесткая ссылка работает путем создания другого имени файла, которое ссылается на данные inode исходного файла. На практике это похоже на создание копии файла.

Вот несколько важных аспектов жестких ссылок:

  • Если исходный файл удален, к данным файла все равно можно будет получить доступ через другие жесткие ссылки.
  • Если исходный файл перемещен, жесткие ссылки по-прежнему работают.
  • Жесткая ссылка может относиться только к файлу в той же файловой системе.
  • Если количество жестких ссылок равно нулю, индексный дескриптор и данные файла удаляются безвозвратно.

Источник

Оцените статью
Adblock
detector