Как использовать жесткие ссылки для линковки файлов в Linux

Есть два типа ссылок, которые вы можете создать в Linux; жесткие ссылки и символические ссылки.

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

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

Представь, что ты родился с именем Роберт. Другие люди могут знать вас как Робби, Боб, Бобби или Роб. Каждый человек будет говорить о том же человеке. 

Каждая ссылка добавляет 1 к счетчику ссылок, что означает удаление физического файла, который необходимо удалить для каждой ссылки.

Зачем использовать жесткие ссылки?

Жесткие ссылки обеспечивают эффективный способ организации файлов. Самый простой способ описать это со старым эпизодом Улицы Сезам.

Берт сказал Эрни убрать все свои вещи, и поэтому Эрни приступил к выполнению своей задачи. Прежде всего он решил убрать все красные вещи. «Пожарная машина красная». Итак, Эрни убирает пожарную машину. Далее Эрни решает убрать все игрушки на колесиках. Пожарная машина имеет колеса. Итак, Эрни убрал пожарную машину. Само собой разумеется, Берт приходит домой, чтобы найти точно такой же беспорядок, как и раньше, но Эрни убирал пожарную машину с полдюжины раз.

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

  • Фотографии красных вещей
  • Фотографии транспортных средств
  • Фотографии экстренных служб

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

Жесткая ссылка не занимает места вообще. Таким образом, вы можете хранить одно и то же видео в разных категориях (например, по годам, жанрам, актерам, режиссерам), не уменьшая места на диске.

Как создать жесткую ссылку

Вы можете создать жесткую ссылку, используя следующий синтаксис:

ln path / to / file / path / to / hard / link

Например, на изображении выше у нас есть папка с музыкой Элиса Купера, которая называется Trash, по пути / home / gary / Music / Alice Cooper / Trash. В этой папке 10 песен, одна из которых классическая Poison.

Теперь Poison — это рок-трек, поэтому мы создали папку с именем Rock в папке music и создали жесткую ссылку на Poison, введя следующий файл:

ln "01 - Poison.mp3" "~ / Музыка / Рок / Poison.mp3"

Это хороший способ организовать музыку.

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

Вы можете определить, имеет ли файл жесткую ссылку, с помощью команды ls:

ls -lt

Стандартный файл без ссылок будет выглядеть следующим образом

-rw-r - r-- 1 гэри гэри 1000 дек 18 21:52 яд.mp3

Столбцы следующие:

  • -RW-р — r— = разрешения
  • 1 = количество ссылок
  • Гэри = группа
  • Гэри = владелец
  • 1000 = размер файла
  • 18 декабря = дата
  • 21:52 = время
  • poison.mp3 = имя файла

Если бы это была жесткая ссылка, результат выглядел бы следующим образом:

-rw-r - r-- 2 gary gary 1000 дек. 18 21:52 яд.mp3

Обратите внимание, что в столбце количества ссылок отображается 2. Каждый раз, когда создается жесткая ссылка, это число будет увеличиваться.

Символическая ссылка будет выглядеть следующим образом:

-rw-r - r-- 1 гэри гэри 1000 дек 18 21:52 toxic.mp3 -> toxic.mp3

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

Как найти все жесткие ссылки на файл

Все файлы в вашей системе Linux содержат номер инода, который однозначно идентифицирует файл. Файл и его жесткая ссылка будут содержать один и тот же индекс.

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

ls -i

Вывод для одного файла будет следующим:

1234567 имя файла

Чтобы найти жесткие ссылки на файл, вам просто нужно выполнить поиск файлов по всем файлам с одинаковым индексом (т. Е. 1234567).

Вы можете сделать это с помощью следующей команды:

найти ~ / -xdev -inum 1234567
Ссылка на основную публикацию