русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Использование жестких связей


Дата добавления: 2015-07-09; просмотров: 1009; Нарушение авторских прав


Жесткая связь имеет место между несколькими именами файла, указываю- щими на одни и те же метаданные (inode). Наличие у файла другого имени, т. е. наличие жесткой связи, можно обнаружить, изучив вывод команды ls –l


 

(пример 4.25). Эта команда в третьем столбце показывает количество имен у файла (link count). Если у файла link count имеет значение, большее едини- цы, значит, файл жестко связан.

 

Пример 4.25. Жесткая связь

 

$ ls -li /bin/*grep

13598 -rwxr-xr-x 3 root root 85228 Sep 11 2009 /bin/grep

13598 -rwxr-xr-x 3 root root 85228 Sep 11 2009 /bin/egrep

13598 -rwxr-xr-x 3 root root 85228 Sep 11 2009 /bin/fgrep

 

Листинг, выводимый командой ls –li /bin/*grep, показывает, что имена

/bin/grep, /bin/egrep и /bin/fgrep принадлежат одному и тому же файлу с тремя именами. Номер inode у всех этих файлов одинаков, следовательно, они эк- вивалентны.

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

Для создания жесткой связи с файлом применяется команда ln. Первый аргумент команды — имя файла, а второй — имя жесткой связи с ним (при- мер 4.26).

 

Пример 4.26. Создание жесткой связи

 

$ ln file1 newname

$ ls -li file1

4676 -rw-rw-r-- 2 user1 users 0 Dec 14 20:43 file1

$ ls -li newname

4676 -rw-rw-r-- 2 user1 users 0 Dec 14 20:43 newname

 

В примере 4.26 создано новое имя для файла file1 — newname. Команда ls -li

демонстрирует, что inode у этих файлов одинаковые.

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




 

Пример 4.27. Эквивалентность имен жестко связанных файлов

 

$ echo 'This is a hard link' > file1

$ cat newname

This is a hard link

 

В примере 4.27 информация в файл была записана с использованием имени файла file1, а чтение информации было произведено из newname.

Удаление одной жесткой связи с файлом уменьшает количество имен (link count) на единицу (пример 4.28), однако реально файл удаляется только то- гда, когда счетчик количества имен уменьшается до нуля.

 

Пример 4.28. Количество имен файла

 

$ ls -l file1 newname

-rw-rw-r-- 2 user1 user1 20 Dec 14 20:43 file1

-rw-rw-r-- 2 user1 user1 20 Dec 14 20:43 newname

$ rm -f file1

$ ls -l file1 newname

ls: file1: No such file or directory

-rw-rw-r-- 1 user1 user1 20 Dec 14 20:43 newname

 

Пример 4.28 демонстрирует, что при удалении одного из имен файла счетчик имен уменьшился на единицу.

Установить жесткую связь с каталогом с помощью команды ln нельзя, т. к. для каталогов жесткие связи имеют особый смысл (пример 4.29).

 

Пример 4.29. Попытка создания жесткой связи для каталога

 

$ ls -ld LPI

drwxrwx--- 10 prof users 544 May 2 10:15 LPI

$ ln LPI l1

ln: `LPI': не допускается создавать жесткие ссылки на каталоги

 

У каждого каталога имеются как минимум два имени — имя каталога, запи- санное в его родительском каталоге, и имя "точка". Таким образом, у вновь созданного каталога существуют сразу два имени. А у его родительского ка- талога после создания нового каталога количество имен увеличивается на единицу, т. к. в дочернем каталоге имеется имя "две точки", являющееся же- сткой связью с именем родительского каталога (пример 4.30).


 

Пример 4.30. Жесткая связь каталога с подкаталогами

 

$ ls -ldi

3555 drwx------ 16 user1 users 1120 Dec 15 22:15 .

$ mkdir dir1

$ ls -ild dir1

1598 drwxr-x--- 2 user1 users 48 Dec 15 23:03 dir1

$ ls -ial dir1

 

total  
drwxr-x--- 2 user1 users Dec 23:03 .
drwx------ 17 user1 users Dec 23:03 ..

$ ls -ldi

3555 drwx------ 17 user1 users 1144 Dec 15 23:03 .

 

В примере 4.30 был создан каталог dir1, inode которого — 1598. Имя "точка", находящееся в каталоге dir1, — имя текущего каталога, имеет тот же индекс- ный дескриптор 1598. Таким образом, у нового каталога dir1 существуют два имени. Имя родительского каталога — "две точки", находящиеся в каталоге dir1, имеет inode 3555, значение которого совпадает с inode родительского каталога. При сравнении выводов первой и последней команд становится за- метно, что после создания каталога dir1 количество имен у его родительского каталога увеличилось на единицу.

Команда cp имеет специальную опцию -l, которая позволяет (в пределах од- ной файловой системы) вместо копирования создавать жесткие связи с ис- ходными файлами (пример 4.31).

 

Пример 4.31. Команда cp -l

 

$ ls -li f???

 

-rw-r--r-- 1 user1 users 0 Dec 12:30 f112
-rw-r--r-- 1 user1 users 0 Dec 12:30 f113
-rw-r--r-- 1 user1 users 0 Dec 12:30 f117

$ cp -l f??? dir1

$ ls -li dir1

 

total  
-rw-r--r-- 2 user1 users 0 Dec 12:30 f112
-rw-r--r-- 2 user1 users 0 Dec 12:30 f113
-rw-r--r-- 2 user1 users 0 Dec 12:30 f117

 

В примере 4.31 показано, что при использовании команды cp с опцией -l для исходных файлов были созданы жесткие связи с такими же именами в ката- логе dir1.

 



<== предыдущая лекция | следующая лекция ==>
Устройство файловой системы | Использование символических ссылок


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.159 сек.