Копирование файлов в Lunix.

Для выполнения данной операции используется команда cp (от англ. copy). Формат использования выглядит так:

cp файл_источник целевой_файл 

Для примера создадим копию файла test.txt под названием test_copy.txt

Исходный файл сохранился, кроме того у нас имеется его копия.

А если в качестве целевого файла указать существующий файл?

Тогда этот файл будет перезаписан.

Чтобы этого не произошло удобно использовать опцию -i (—interactive). Работает также, как и с командой mv — запрашивает у пользователя подтверждение действия.

А можно копировать файл в каталог?

Да, для этого в качестве целевого файла укажи сам каталог.

Например, скопируем файл test.txt в каталог home/student/video/:

cp test.txt home/student/video  или просто cp test.txt video/

А можно этой командой копировать каталоги со всем содержимым?

Да, но для этого используется специальная опция -R (—recursive):

cp -R каталог_источник целевой_каталог

Кстати, у скопированной копии права доступа и прочие атрибуты файла определяются в соответствии с атрибутами самого пользователя, скопировавшего файл. Чтобы сохранить первоначальные атрибуты необходимо использовать опцию -p (—preserve).

С командой ср можно использовать следующие опции:

-f (—force)

-u (—update)

-v (—verbose)

Как они работают мы уже знаем.

 

Жесткие и символьные ссылки.

Как ты уже знаешь в системе Linux существуют 2 типа ссылок: жесткие и символьные. Поговорим сначала о жестких ссылках.

Содержимое любого файла хранится на определенных секторах запоминающего устройства (жесткого диска, USB флэш, CD). Для обращения к этим областям памяти и используются жесткие ссылки, которые и называются именами файла.

То есть жесткая ссылка и имя файла это одно и то же?

Да, так и есть. Содержимое файла да и сам файл ничего не знают о присвоенных ему именах и ссылках, Поэтому можно создавать какие угодно имена/ссылки и в каком угодно количестве.

То есть можно создать 2 и более имени одного и того же файла?

Совершенно верно. Для этого существует команда ln (сокращенно от link — связывать):

ln файл жесткая_ссылка

 

Существует и другая форма записи команды ln, выглядит так:

 ln файл каталог

С помощью нее сДоступно 1 обновлениеоздается жесткая ссылка в указанном существующем каталоге.

Важно знать, что в Linux файлы не привязываются к своим именам. У каждого файла есть индексный дескриптор — описание файла, которое содержит всю информацию о файле:

  • тип файла
  • время создания и модификации
  • владелец файла
  • права доступа
  • размер файла
  • идентификатор файла, то есть знает в какой области памяти хранится файл

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

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

А как узнать идентификатор файла?

С помощью команды ls -i либо ls —inod

Цифры перед каждым файлом указывают на индексный дескриптор.

Заметь, что ссылки, указывающие на один и тот же файл имеют одинаковые идентификатор и прочие атрибуты файла.

У жестких ссылок есть некоторые недостатки:

  • нельзя создать ссылку на несуществующий файл
  • нельзя создать ссылку на каталог
  • нельзя создать ссылку на файл, который находится в другой файловой системе, например, на флэшке или в другом сетевом диске.

А как обойти все эти ограничения?

Легко. Для этого существуют символьные ссылки. Символьная ссылка это просто файл, который содержит путь к указанному файлу или каталогу. Создается она так:

ln -s файл название_ссылки либо ln —symbolic файл название_ссылки.

Ключевым здесь является опция -s.

Чтобы узнать полный путь ссылки воспользуемся командой realpath

А с каким идентификатором будет связана данная ссылка?

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

С командой ln используются следующие опции:

-f (—force) — принудительная перезапись ссылок без оповещения

-b (—backup) — создание резервных копий файла