Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО отчёт №2.docx
Скачиваний:
37
Добавлен:
16.04.2015
Размер:
60.58 Кб
Скачать

9. Способы формирования ссылок

  • При создании нового файла или копировании создаётся жёсткая ссылка на файл. Жёсткая ссылка представляет из себя связь имени файла с метаданными (inode) и данными файла. Каждому имени соответствует жёсткая ссылка. Такая архитектура позволяет одному файлу иметь несколько имён в ФС. Пока данные файла связаны хотя бы с одним именем, их можно использовать, то есть можно совершать некоторые действия с файлом. Если удалить все имена, связанные с данными файла, то файл также будет удалён. Количество жёстких ссылок на файл можно увидеть во втором столбце, если ввести команду ls –l file. Если создать новый каталог, то на него сразу же будет две жёстких ссылки: ссылка из того каталога, в котором он находится и ссылка на самого себя, расположенная внутри нового каталога. При этом на тот каталог, в котором был создан новый, появится ещё одна жёсткая ссылка, расположенная в новом каталоге.

  • Жёсткую ссылку можно создать с помощью команды link. Ей надо указать файл (одно из его имён) и новое имя, которое будет также связано с этим файлом. Все жёсткие ссылки на один файл должны находиться в каталогах одного и того же дискового раздела, так как индексный дескриптор файла уникален только в пределах раздела.

  • Кроме того, жёсткую ссылку можно создать с помощью команды ln. Она отличается от link тем, что имеет дополнительные опции.

  • С помощью команды ln –s можно создать символическую ссылку. Символическая связь является особым типом файла, она позволяет косвенно адресовать другой файл. Данные файла, являющегося символической связью, содержат только имя целевого файла. Таким образом, можно создать символическую связь даже на несуществующий файл. ОС работает с символическими ссылками не так, как с обычными файлами. Например, при выводе на экран содержимого символической ссылки появятся данные того файла, на который она ссылается. А при вводе команды ls –l file, если file является символической ссылкой, появится не только имя файла file, но и его данные.

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

#! /bin/sh

if [ $# -lt 1 ]

then

echo $0: error: File not specified

else

filename=$1

ls -lRa / | grep $filename$ | grep ^l > symlinks.txt

echo -n total >> symlinks.txt

wc -l symlinks.txt | cut -c1-9 >> symlinks.txt

fi

Команда wc подсчитывает число слов, байт или строк в файле.

Создадим несколько символических ссылок на файл отчёта и запустим скрипт:

# ln -s /home/SPO/Lab2/otchet2.txt /symlink1

# ln -s /home/SPO/Lab2/otchet2.txt /home/SPO/symlink2

# ln -s /home/SPO/Lab2/otchet2.txt /root/symlink3

# ./script9 otchet2.txt

# cat symlinks.txt

lrwxrwxrwx 1 root root 26 Dec 26 20:39 symlink1 -> /home/SPO/Lab2/otchet2.txt

lrwxrwxrwx 1 root root 26 Dec 26 20:39 symlink2 -> /home/SPO/Lab2/otchet2.txt

lrwxrwxrwx 1 root root 26 Dec 26 20:40 symlink3 -> /home/SPO/Lab2/otchet2.txt

total 3