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

27.01.2021 Дмитрий Демченко 1106 + Linux

Поиск и удаление символических ссылок

Для поиска мягких ссылок в Linux очень удобно использовать команду find, точнее find . -type l, выводящую их список в текущем каталоге и всех вложенных в него папках.

При этом команда с данным набором параметров не различает рабочие и нерабочие ссылки, чтобы получить список только битых ссылок, вместо параметра type нужно использовать параметр  -xtype, вот так:

find . -xtype l

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

SUDO здесь не поможет, решить эту проблему можно сбросив все ошибки в /dev/null.

Добавьте к уже известной команде перенаправление:

Поиск и удаление символических ссылок

find . -xtype l 2>/dev/null

Поскольку символические ссылки занимают очень мало места, их можно вообще не трогать.

Если всё же хотите их удалить, добавьте чрез пробел к указанной выше команде аргумент -delete.

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

В общем, если и удалять битые симлинки, то делать это нужно только в тех системных каталогах, назначение которых вам известно. Так, тест с удалением всех битых символических ссылок в Ubuntu , установленной на виртуальную машину VirtualBox, нарушило работу дополнений гостевой ОС, в результате чего в виртуальной системе оказалось доступным только разрешение VGA, составляющее всего 640×480 пикселей.

Использование команды find

Пользователи Ubuntu могут использовать команду find для вывода списка всех неработающих символических ссылок:

find . -xtype l

Команда find предназначена для поиска файлов в иерархии каталогов. В этом контексте {поиск неработающих ссылок} используются следующие аргументы команды:

1. -L Следовать по символическим ссылкам — Когда find проверяет или печатает информацию о файлах, используемая информация должна быть взята из свойств файла, на который указывает ссылка, а не из самой ссылки (если это не битая символическая ссылка или поиск не может проверить файл, на который указывает ссылка). Использование этой опции подразумевает -noleaf.

Использование команды find

Если вы позже используете опцию -P, -noleaf все равно будет действовать. Если -L действует, и find обнаруживает символическую ссылку на подкаталог во время его поиска, будет найден подкаталог, на который указывает символическая ссылка. Когда действует опция -L, предикат -type всегда будет сопоставляться с типом файла, на который указывает символическая ссылка, а не с самой ссылкой (если символическая ссылка не нарушена). Действия, которые могут привести к разрыву символических ссылок во время выполнения поиска (например, -delete), могут привести к путанице в поведении. Использование -L заставляет предикаты -lname и -ilname всегда возвращать false.

Читайте также:  Установка Android на компьютер или ноутбук

2. -xtype c — аналогично -type, если файл не является символической ссылкой. Для символических ссылок: если указана опция -H или -P, true, если файл является ссылкой на файл типа c; если задана опция -L, true, если c равно `l ‘. Другими словами, для символических ссылок -xtype проверяет тип файла, который не проверяет -type.

3. -тип с — Файл имеет тип с. Где c — l или символическая ссылка; это никогда не верно, если действует опция -L или опция -follow, если только символическая ссылка не нарушена. Если вы хотите искать символические ссылки, когда действует -L, используйте -xtype.

Типы файловых систем Linux. Какая из файловых систем используется ядром Linux

Как уже говорилось ранее, в Linux несколько предустановленных и доступных ФС. В зависимости от выбора пользователя будут меняться методы работы с файлами, обращения к конфигурации ядра и способы хранения данных в ОП. В зависимости от целей и задач пользователя (а также достоинств и недостатков самих ФС) можно выбрать любую файловую систему, доступную в дистрибутиве ОС.

Список основных файловых систем:

  • Ext2;
  • Ext3;
  • Ext4;
  • JFS;
  • ReiserFS;
  • XFS;
  • Btrfs;
  • ZFS.

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

Ext2, Ext3, Ext4

Первая группа ФС — Extended Filesystem (Ext2, Ext3, Ext4) — является стандартом для Linux. Как следствие, это самые распространенные системы. Они редко обновляются, но зато стабильны. Ext2 создавалась специально под Linux (изначально Extended Filesystem делали еще под Minix).

Эта группа ФС поддерживает наибольшее количество доступных функций из всех, предложенных на рынке. Ext3 (2001 г.) стала еще более стабильной, чем ее предшественница, за счет использования журналирования, а версия Ext3 (2006 г.) популярна и среди современных пользователей. Среди улучшений: увеличение максимального размера раздела до 1 Эксабайта.

Два типа файловых систем

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

Не журналируемые — не предусматривают хранение логов. Особенности: работают быстрее, но не гарантируют сохранность данных.

Чтобы узнать тип ФС, существует команда file -s.

Журналируемая ФС — первая альтернатива для ФС группы Ext. Ее разработали в IBM специально для операционной системы AIX UNIX. Главные плюсы этой системы: стабильность и минимальные требования для работы. Разработчики JFS ставили перед собой цель создать ФС, которая бы эффективно работала на многопроцессорных компьютерах. Кроме того, эта система также относится к журналируемым ФС. Но есть и очевидные недостатки. Если случится непредвиденный сбой в работе системы, ФС может использовать версии файлов, которые уже устарели. Причина заключается в том, что журнал сохраняет только метаданные.

ReiserFS

Эта ФС разработана под руководством Ганса Райзера и названа в честь него. Подходит исключительно под Linux, чаще всего ее используют в качестве возможной замены Ext3. Главные особенности: увеличенная производительность и более широкие возможности. Изменяющийся размер блока дает пользователю возможность объединять небольшие файлы в один блок, таким образом удается избежать фрагментации и повысить качество работы ФС в целом. Размер разделов можно менять прямо в процессе работы, однако эта ФС может показать нестабильные результаты и потерять данные, например, при отключении энергии.

Еще одна журналируемая ФС. Однако, в отличие от аналогов, в логи записывает исключительно те изменения, которые претерпевают метаданные. Разработана для ОС в Silicon Graphics. Важные особенности: быстро работает с файлами сравнительно большого размера, умеет выделять место в отложенном режиме, а также менять размеры разделов в процессе работы. Часто встречается в дистрибутивах на основе Red Hat. Минусы: нельзя уменьшить размер разделов, сложно восстанавливать данные и можно потерять информацию при отключении питания.

Btrfs

Современная ФС, главной особенностью которой является высокая отказоустойчивость. Из дополнительных «бонусов»: удобна для сисадминов и поддерживает сравнительно простой процесс восстановления данных. Поддерживает подтома, разрешает менять размеры разделов в динамическом режиме и позволяет делать снапшоты. Отличается высокой производительность. Применяется как ФС, установленная по умолчанию, в OpenSUSE и SUSE Linux. Главный минус — нестабильность (нарушена обратная совместимость, сложная для поддержки и так далее).

Flash-Friendly File System входит в состав ядра ОС Linux и предназначена для использования с хранилищем на основе флеш-памяти. Разработчик — корпорация Samsung. F2FS разбивает носитель на части, которые снова делятся, и так далее. Эти миниатюрные зоны используются вместо повторного использования одних и тех же размеченных участков.

OpenZFS

OpenZFS — ветвь ZFS, о которой мы пишем ниже). Разработчик — компания Sun для ОС Solaris. В 2016 году Ubuntu включила ее поддержку по умолчанию. Главные плюсы: защита от повреждения данных, поддержка больших файлов и автоматическое восстановление.

Читайте также:  Для чего нужен и как узнать основной шлюз

Традиционные для Windows ФС NTFS, FAT, HFS применяются в Linux, но пользователь не сможет установить в такие разделы корень, поскольку структура этих ФС для этого не приспособлена.

Точки стыка (жёсткие связи), соединения и символические ссылки файловой системы NTFS

Итак, в чём основные отличия связующих ссылок?

Жёсткая ссылка (hard link) – это файл, представляющий другой файл, находящийся на том же томе без дублирования его свойств. Жёстких ссылок на один файл может быть создано несколько, но на файл, находящийся в другом разделе (а тем более диске), жёсткую ссылку не поставить. Более того, жёсткие ссылки работают только с файлами – никаких директорий. Преимуществом жёсткой ссылки является тот факт, что, являясь копией настоящего, она не требует дополнительного пространства на диске. Так, если вы создали 5 ссылок на 1 файл весом 100 Мб, общий объём занимаемого места так и останется 100 Мб (а не 600 Мб). Любую из этих ссылок можно удалить, остальные и сам файл-оригинал останутся. А все изменения в файле отображаются и в ссылках.

Соединения для каталога – это ссылки на целевую директорию/папку. Соединения уже видят не только собственные тома, но и соседние разделы. Но, опять же, лишь в пределах локальной машины. Также не требуют свободного места, лишь указывая на оригинальную директорию. Если ту удалить или переместить, связи сломаются, и ссылки работать не будут. Помните историю про Documents and Settings? Это и есть пример такого соединения.

Символические ссылки появились с Windows Vista. Они представляют собой объект файловой системы, указывающий на другой объект. Это “супер-продвинутый” ярлык. И такие “ярлыки” могут указывать на любые файлы и папки в пределах локальной сети (с установленными Windows Vista и позднее). Объёмы жёсткого диска также не используются. Кроме того, связь по такой ссылке может осуществляться в виде абсолютного (полного) маршрута и относительного пути к целевой папке/файлу. Первый вариант – это всем знакомый по проводнику тип тропинки Диск:\Каталог\Подкаталог\Файл. В относительной ссылке пути к целевой директории могут перемежёвываться. Но объединяет их одно – система и программы воспринимает ссылки и цель как одно и тоже. При редактировании ссылок и цели ссылки наследуют свойства предыдущего варианта связей NTFS-системы.

Отличия между типами связей можно представить в таком виде:

Закончить можно ещё одним фактом: создание связи между файлами или каталогами в NTFS ни в коем случае не подразумевает копирование или резервирование целевых файлов или папок. И Windows не следит за состоянием цепочки: удаляете цель – получаете ошибку.

Ну, вот такая в целом ситуация с типами внутренних связей Windows. Успехов.