Ссылки в файловой системе (файловые ссылки)
Во всех unix и linux операционных системах есть отдельный механизм работы с файлами, называемый “ссылки”. Не вдаваясь в детали работы достаточно сложного механизма, мы просто расскажем для чего можно использовать символические или жесткие ссылки, а также поясним разницу между ними.
Представьте себе ситуацию: у вас есть файл file1, размер которого 200 мегабайт. Вам необходимо его отдать 100 разным людям, и хочется понять, кто из них и в какое время скачал с вашего сервера этот файл.
Можно конечно 100 раз скопировать файл под разными именами, а можно сделать 100 ссылок на файл. Таким образом вам удастся сэкономить достаточное количество свободного места на диске. Осталось только разобраться, какой тип ссылки выбрать: жесткую (hard link) или символическую (symbolic link) ссылку.
Жесткие ссылки
Hard link представляет из себя ссылку, которая не зависит от исходного файла. Грубо говоря, это ссылка на область жесткого диска, на которой хранятся данные из файла.
Для примера проиллюстрируем механизм работы.
Командой echo “aaa” > file1 мы создадим файл с именем file1 и с содержимым “aaa”.
Создадим жесткую ссылку (hard link)
и выполним команду ls
В выводе команды вы увидите 2 файла file1 hardlink1, они будут абсолютно идентичны
Теперь удалим исходный файл
И опять посмотрим на вывод команды ls.
На диске остался файл hardlink1, он не исчез, и содержимое его не поменялось. Чтобы в этом убедится выполните команду cat hardlink1, вы увидите старый файл
Символические ссылки
Symbolic link в отличии от hard link представляют собой ссылку не на область данных на жестком диске, а на имя исходного файла. Чтобы проиллюстрировать это более наглядно создадим файл file2 с содержимым “bbb”. Для этого выполним команду
Теперь создадим символическую ссылку и посмотрим содержимое нового файла
Как видите, содержимое файла symlink полностью повторяет исходный файл. Теперь отредактируем исходный файл
Допишите что-нибудь в конец файла, для сохранения нажмите ctrl+x. И теперь заново посмотрим содержимое файла, представленного символической ссылкой
Как видите, содержимое ссылки тоже поменялось. Если вы решите удалить исходный файл, то все символические ссылки также окажутся недоступны. При попытке их просмотра вы увидите сообщение об ошибке
Вывод.
Исходя из вышесказанного можно подытожить: два типа ссылок необходимо использовать по разному. Используйте символические ссылки на файл в том случае, когда вам надо всегда иметь точную копию файла и вы можете гарантировать, что исходный файл никуда не исчезнет или не будет поврежден.
Использование жестких ссылок поможет в случаях, когда есть вероятность изменения или удаления исходного файла.