12. Символические ссылки

Когда вы выводите список файлов в детальном режиме, вы видите много информации. Давайте рассмотрим предыдущий пример информации об inode из команды ls -li:

pete@icebox:~$ ls -li
140 drwxr-xr-x 2 pete pete 6 Jan 20 20:13 Desktop
141 drwxr-xr-x 2 pete pete 6 Jan 20 20:01 Documents

Ранее мы пропустили третье поле в этом выводе. Это поле — счетчик ссылок.

Счетчик ссылок в Linux

Счетчик ссылок в linux — это общее количество жестких ссылок, имеющихся у файла. Чтобы понять, что это значит, сначала нужно обсудить, что такое ссылки. В Linux существует два типа ссылок: символические ссылки (symlinks) и жесткие ссылки.

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

В операционной системе Windows есть ярлыки, которые, по сути, являются псевдонимами, указывающими на другие файлы. В Linux эквивалентом является символическая ссылка, также известная как мягкая ссылка или symlink. Символическая ссылка — это специальный тип файла, который указывает на другой файл или каталог по его имени.

Давайте посмотрим на это на практике. Мы создадим несколько файлов, а затем символическую ссылку.

pete@icebox:~/Desktop$ echo 'myfile' > myfile
pete@icebox:~/Desktop$ echo 'myfile2' > myfile2
pete@icebox:~/Desktop$ echo 'myfile3' > myfile3

pete@icebox:~/Desktop$ ln -s myfile myfilelink
pete@icebox:~/Desktop$ ls -li
total 12
  151 -rw-rw-r-- 1 pete pete 7 Jan 21 21:36 myfile
93401 -rw-rw-r-- 1 pete pete 8 Jan 21 21:36 myfile2
93402 -rw-rw-r-- 1 pete pete 8 Jan 21 21:36 myfile3
93403 lrwxrwxrwx 1 pete pete 6 Jan 21 21:39 myfilelink -> myfile

Здесь мы создали символическую ссылку с именем myfilelink, которая указывает на myfile. Когда вы используете ls для просмотра ls symlink, она четко идентифицируется по букве l в начале строки разрешений и символу ->, указывающему на цель. Обратите внимание, что символическая ссылка имеет свой собственный уникальный номер inode (93403). Поскольку символические ссылки указывают на имена файлов, а не на inode, они могут охватывать разные файловые системы.

Понимание жестких ссылок

Другой тип ссылки — жесткая ссылка. Жесткая ссылка создает еще одну файловую запись, которая указывает непосредственно на тот же inode, что и исходный файл.

Давайте создадим жесткую ссылку для myfile2:

pete@icebox:~/Desktop$ ln myfile2 myhardlink
pete@icebox:~/Desktop$ ls -li
total 16
  151 -rw-rw-r-- 1 pete pete 7 Jan 21 21:36 myfile
93401 -rw-rw-r-- 2 pete pete 8 Jan 21 21:36 myfile2
93402 -rw-rw-r-- 1 pete pete 8 Jan 21 21:36 myfile3
93403 lrwxrwxrwx 1 pete pete 6 Jan 21 21:39 myfilelink -> myfile
93401 -rw-rw-r-- 2 pete pete 8 Jan 21 21:36 myhardlink

Обратите внимание, что myhardlink имеет тот же номер inode (93401), что и myfile2. Счетчик ссылок для обоих файлов также увеличился до 2. Это связано с тем, что теперь две файловые записи указывают на один и тот же inode. Если вы измените содержимое myfile2, изменения отразятся в myhardlink, и наоборот. Если вы удалите myfile2, данные файла по-прежнему будут доступны через myhardlink. Inode и его данные удаляются с диска только тогда, когда счетчик ссылок падает до нуля. Поскольку жесткие ссылки указывают на inode, которые уникальны в пределах одной файловой системы, они не могут охватывать разные файловые системы.

Создание символических ссылок и жестких ссылок

Вы можете создавать оба типа ссылок с помощью команды ln. Синтаксис прост.

Для создания символической ссылки используйте флаг -s:

ln -s /path/to/original /path/to/link

Для создания жесткой ссылки опустите флаг -s:

ln /path/to/original /path/to/link

Использование команд ls symlinks или общих ls links с опцией -l имеет решающее значение для управления и идентификации этих различных типов файлов.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот несколько практических лабораторных работ для закрепления вашего понимания управления файлами, ссылками и inode:

  1. Управление файлами и каталогами в Linux — Практикуйтесь в создании, копировании, перемещении и удалении файлов и каталогов, и особенно узнайте о символических и жестких ссылках, а также о том, как анализировать inode.
  2. Навигация по файловой системе в Linux — Освойте основные команды, такие как pwd, cd и ls, чтобы эффективно перемещаться по файловой системе Linux, что является основополагающим навыком для понимания того, где находятся файлы и их inode.

Эти лабораторные работы помогут вам применить концепции управления файлами и ссылками в реальных сценариях и повысить уверенность в работе с файловой системой Linux.

Тест

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