среда, 18 июля 2012 г.

Linux - символические и жёсткие ссылки






Практическая работа по символическим ссылкам:

cd                   # в домашний каталог
mkdir -p standards/{civil,mechanical} # создать структуру необходимых каталогов
cd standards/civil   # в каталог строительных стандартов
touch document1.txt  # создаем новый файл со стандартом
echo "some text" > document1.txt  # содержимое...
man ln               # для выхода нажать "q"; это справка по "ln", почитайте
cd ../mechanical/    # в каталог машиностроительных стандартов
ln -s ../civil/document1.txt document1.txt    # создаем симв. ссылку 
                                              # с таким же именем
ls -l                # посмотрим, что вышло
pwd                  # где мы находимся
file document1.txt   # что за файл "document.txt" в текущем каталоге?
cat document1.txt    # просмотр исходного файла по ссылке
echo "additional text" >> document1.txt   # редактирование файла по ссылке
cat ../civil/document1.txt  # видно, что оригинал изменился
rm -f ../civil/document1.txt   # удаление оригинального документа
ls -l                # а ссылка осталась
cat document1.txt    # ошибка, т.к. ссылка "висячая" (ссылается на
                     # несуществующий файл)
echo "new text" >> document1.txt   # запись в файл по ссылке;
                                   # будет создан новый файл-оригинал -
                                   # ~/standards/civil/document1.txt
cat document1.txt    # переход по ссылке, видно что файл-оригинал существует

cp document1.txt ../document1.txt  # копируем ссылку в каталог "standards"
cd ../                             # переход в каталог "standards"
ls -l                              # видно, что скопирован файл-оригинал
file document1.txt                 # ...не ссылка, а настоящий файл



Практическая работа по жестким ссылкам:

# в той же иерархии каталогов, что была создана в работе по симв. ссылкам
# /home/joe/standards
cd civil
echo "123456" > myfile
ls -i myfile                    # уникальный номер созданного файла
ls -l myfile                    # число 1 указывает, что у файла одна жесткая
                                # ссылка
ln myfile ../mechanical/myfile  # создаем жесткую ссылку
                                # пусть имена файлов будут одинаковые
cd ../mechanical/
ls -i myfile                    # уникальные номера совпадают
ls -l myfile                    # видим, что у файла уже 2 жестких ссылки
file myfile                     # при чем файловая система видет напрямую файл
                                # а не ссылку (как при симв. ссылке)

cp myfile ../myfile             # скопируем в каталог standards
cd ../
ls -il myfile                   # у скопированного файла уже другой уникальный
                                # номер, и счетчик ссылок – 1, т.е. это новый
                                # файл а не жесткая ссылка на созданный нами
rm -f civil/myfile              # удалим созданный нами в самом начале файл
cd mechanical/
ls -il myfile                   # количество ссылок стало 1, но номер тот же



# в той же иерархии каталогов, что была создана в работе по симв. ссылкам
# /home/joe/standards
cd civil
echo "123456" > myfile
ls -i myfile                    # уникальный номер созданного файла
ls -l myfile                    # число 1 указывает, что у файла одна жесткая
                                # ссылка
ln myfile ../mechanical/myfile  # создаем жесткую ссылку
                                # пусть имена файлов будут одинаковые
cd ../mechanical/
ls -i myfile                    # уникальные номера совпадают
ls -l myfile                    # видим, что у файла уже 2 жестких ссылки
file myfile                     # при чем файловая система видет напрямую файл
                                # а не ссылку (как при симв. ссылке)

cp myfile ../myfile             # скопируем в каталог standards
cd ../
ls -il myfile                   # у скопированного файла уже другой уникальный
                                # номер, и счетчик ссылок – 1, т.е. это новый
                                # файл а не жесткая ссылка на созданный нами
rm -f civil/myfile              # удалим созданный нами в самом начале файл
cd mechanical/
ls -il myfile                   # количество ссылок стало 1, но номер тот же

Комментариев нет:

Отправить комментарий