Связями называются записи о соответствии между именами файлов и номерами индексных узлов (i-узлов). Номера индексных узлов - это внутренние абсолютные идентификаторы файлов в AIX. Поскольку записи каталогов состоят из имен файлов и соответствующих номеров i-узлов, их можно считать связями. Фактически уникальным идентификатором файла как физического объекта является i-узел, а не имя этого файла. Любой файл (номер i-узла) может быть связан с несколькими именами одновременно.
Например, предположим, что номер
i-узла 798 - это файл с информацией о продажах ярославского отделения компании
за июнь. Пусть этому файлу присвоено следующее имя:
Номер i-узла | Имя файла |
---|---|
798 | memo |
Поскольку логически этот файл
можно считать относящимся к каталогам sales и yaroslavl,
в этих каталогах можно создать связи с ним. После создания связей с
помощью команды ln у данного файла будет уже три имени:
Номер i-узла | Имя файла |
---|---|
798 | memo |
798 | sales/june |
798 | yaroslavl/june.sales |
Теперь при просмотре любого из этих файлов с помощью команды pg или cat будет выдаваться одна и та же информация. Если вы измените содержимое любого из этих файлов, то одновременно будут изменены и остальные два файла, поскольку все они связаны с одним номером i-узла.
В этом разделе приведена информация по следующим темам:
Связи создаются с помощью команды
ln. Существует два типа связей:
Примечание: Независимо от числа символьных связей, файл принадлежит пользователю, создавшему его. Права доступа к файлу могут изменять только его владелец и пользователь root. Однако изменять связь с файлом (а, значит, и сам файл) могут все пользователи, которым разрешен доступ к этой связи.
Файл или каталог существует до тех пор, пока с ним существует хотя бы одна жесткая связь. Команда ls -l в числе прочей информации для каждого файла и каталога выдает число связей. Для операционной системы все жесткие связи равнозначны, независимо от того, какая из них была создана первой.
Для создания связей между файлами применяется команда ln. Фактически связи - это альтернативные имена одного и того же файла. С помощью связей можно предоставить различным пользователям доступ к одному большому файлу (например, к базе данных или списку рассылки), не создавая дополнительных копий этого файла. Применение связей позволяет не только сэкономить дисковую память, но и избавляет от необходимости синхронизировать один и тот же файл в различных каталогах.
Команда ln создает связь для файла исходный файл с именем целевой файл или с тем же именем в каталоге целевой каталог. По умолчанию команда ln создает жесткие связи. Для создания символьной связи нужно указать в команде ln флаг -s.
При создании связи с новым именем в текущем каталоге в команде ln можно указывать только один файл. При создании связей в новом каталоге можно указывать несколько файлов одновременно.
Параметр целевой файл указывать не обязательно. Если он не будет указан, то команда ln создаст новый файл в текущем каталоге. Новый файл наследует имя, указанное в параметре исходный файл.
Примечание: Без флага -s можно создавать связи только в тех же файловых системах, в которых находятся исходные файлы.
Например, для создания связи с файлом chap1 введите следующую команду:
ln -f chap1 intro
Нажмите Enter.
Для файла chap1 будет создана связь с именем intro. Флаг -f указывает, что если файл intro не существует, его нужно создать. Если файл intro существует, его нужно заменить на связь с файлом chap1. В результате объекты chap1 и intro будут соответствовать одному и тому же файлу. Все изменения в любом из этих файлов будут немедленно отражены в другом.
Для того чтобы создать для файла index одноименную связь в каталоге manual, введите следующую команду:
ln index manual
Нажмите Enter.
В результате для файла index будет создана связь manual/index.
Для того чтобы создать связи для нескольких файлов в другом каталоге, введите следующую команду:
ln chap2 jim/chap3 /home/manual
Нажмите Enter.
В результате для файла chap2 будет создана связь /home/manual/chap2, а для файла jim/chap3 - связь /home/manual/chap3.
В команде ln можно указывать шаблоны имен файлов, например:
ln manual/* .
Нажмите Enter.
Для всех файлов из каталога manual будут созданы связи в текущем каталоге, точка (.), с теми же именами, что и в каталоге manual.
Примечание: В предыдущей команде между звездочкой и точкой должен быть указан пробел.
Ниже приведен пример команды, создающей символьную связь:
ln -s /tmp/toc toc
Нажмите Enter.
Эта команда создает символьную связь с именем toc в текущем каталоге. Файл toc будет указывать на файл /tmp/toc. Если файл /tmp/toc существует, то его содержимое можно будет просмотреть с помощью команды cattoc.
Следующая команда равносильна предыдущей, хотя в ней не указан параметр целевой файл:
ln -s /tmp/toc
Нажмите Enter.
Полный синтаксис приведен в описании команды ln в книге AIX 5L Version 5.1 Commands Reference.
Для удаления связей применяется команда rm. При удалении жесткой связи файл удаляется только в том случае, если это последняя жесткая связь. Одновременно с файлом (i-узлом) удаляются и содержащиеся в нем данные. После удаления i-узла его номер освобождается и может быть присвоен какому-либо вновь созданному файлу.
Полный синтаксис приведен в описании команды rm в книге AIX 5L Version 5.1 Commands Reference.
Глава 4, Перенаправление ввода и вывода
Глава 7, Принтеры,задания и очереди печати
Глава 8, Резервное копирование и носители
Глава 9, Защита системы и файлов