link

Что делает команда link в Linux

Команда link в Linux — это утилита, которая создает жесткую ссылку (hard link) между двумя файлами. В отличие от символической ссылки, жесткая ссылка указывает на тот же самый inode в файловой системе, что и оригинальный файл. Это значит, что обе ссылки указывают на один и тот же физический блок данных на диске.

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

Простейший синтаксис выглядит так:

Bash
link источник цель

где:

  • источник — это существующий файл;
  • цель — это имя создаваемой жесткой ссылки.

Например:

Bash
link /home/user/file.txt /home/user/file_backup.txt

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

Основные параметры и особенности команды link

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

Поддерживаемые файловые системы

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

Bash
link /mnt/disk1/file1 /mnt/disk2/file2

вернет ошибку «Invalid cross-device link».

Совет: если вам нужно создать ссылку между разделами, используйте ln -s, то есть символическую ссылку, а не команду link.

Проверка созданной ссылки

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

Bash
ls -li file.txt file_backup.txt

Вы увидите, что у обоих файлов одинаковый inode — это подтверждает, что они ссылаются на одни и те же данные.

Также можно проверить количество ссылок с помощью команды stat:

Bash
stat file.txt

Параметр Links покажет, сколько жестких ссылок указывает на данный inode.

Отличия команды link от ln

Многие пользователи Linux путают команду link и более известную утилиту ln. Хотя обе создают жесткие ссылки, между ними есть различия.

Простота и назначение

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

Пример использования ln, аналогичный команде link:

Bash
ln file.txt file_backup.txt

Результат будет идентичен, но ln позволяет добавлять флаги, такие как -s для символических ссылок или -f для принудительного перезаписывания.

Совет: если вы пишете скрипты, где важна предсказуемость и отсутствие дополнительных флагов, используйте команду link в Linux, так как она делает только одно действие — создает жесткую ссылку.

Поведение при ошибках

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

Примеры использования команды link в Linux

Для лучшего понимания рассмотрим практические примеры.

Создание резервной копии

Bash
link /var/log/syslog /var/log/syslog_copy

Теперь оба файла будут иметь одинаковое содержимое. Изменения в одном автоматически отразятся в другом.

Работа с правами доступа

Если у файла file1 установлены права 644, то у новой ссылки file2, созданной через команду link в Linux, будут точно такие же права. Это объясняется тем, что обе ссылки указывают на один и тот же inode.

Проверить можно так:

Bash
ls -l file1 file2

Вы увидите идентичные разрешения и одинаковый размер.

Удаление и сохранение данных

Если вы удалите оригинальный файл:

Bash
rm file1

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

Технические особенности и ограничения

Ограничения командой link

  1. Нельзя создавать ссылки на каталоги (если вы не root).
  2. Нельзя ссылаться между файловыми системами.
  3. Нельзя использовать в сетевых файловых системах (например, NFS) в некоторых конфигурациях.
  4. Нельзя создавать ссылку, если цель уже существует.

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

Проверка inode и количества ссылок

Чтобы увидеть, сколько ссылок у файла:

Bash
ls -l

или

Bash
stat file.txt | grep Links

Если значение больше 1, значит, файл имеет несколько жестких ссылок.

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

Совет 1: Используйте команду link в Linux для защиты от случайного удаления файлов. Создав резервную жесткую ссылку, вы сохраните доступ к данным, даже если основной файл будет удален.
Совет 2: При разработке скриптов резервного копирования используйте link вместо копирования (cp), если важно сэкономить место и время. Жесткая ссылка не дублирует данные, а лишь добавляет новый путь к тем же байтам на диске.

Команда link в Linux — это мощный и недооцененный инструмент, который позволяет создавать жесткие ссылки между файлами. Несмотря на простоту синтаксиса, она дает гибкие возможности при управлении файлами, автоматизации и резервном копировании. Понимание того, как она работает с inode, помогает глубже разобраться в устройстве файловых систем Linux и эффективнее управлять данными.