Иллюстрированный самоучитель по Linux

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

Обеспечение идентичности копии и оригинала

Внимательно присмотревшись к созданным копиям, нетрудно заметить, что некоторые их характеристики имеют мало общего с аналогичными характеристиками оригиналов. Среди этих характеристик – владелец файла, разрешения на доступ, дата и символические ссылки. Рассмотрим каждую из них подробно.

Владельцем копии файла обычно становится пользователь, выполнивший копирование, а не создатель файла-оригинала. Предположим, файл TheFile был создан пользователем user1 и помещен в каталог /tmp, чтобы пользователь user2 смог копировать его оттуда в свой исходный каталог. В списке файлов этот файл выглядит примерно так:

-rw-r-r – 1 userl users 16992 Apr 5 12:10 TheFile

После того, как пользователь user2 скопирует этот файл командой:

$ ср /tmp/TheFile – /NewFile

…он становится владельцем файла-копии.

-rw-rw-r – I user2 users 16992 Apr 5 13:10 NewFile

Файлу, созданному в некотором каталоге, назначается набор разрешений по умолчанию. Но его копия наследует не эти разрешения, а разрешения, назначенные каталогу, в который выполнялось копирование. Обратите внимание на различия в разрешениях файла-оригинала и копии в приведенном примере. Если для оригинала определено разрешение только чтения группами пользователей, то для копии разрешена запись. Изменению подверглась и дата. В копии она совпадает со временем копирования, а с датой оригинала.

Иногда в копии необходимо сохранить все атрибуты файла-оригинала. Предположим, что корневой пользователь создает на съемном диске резервную копию некоторого набора файлов. В отличие от обычного архивирования на магнитную ленту, требующего других средств, в этом случае можно воспользоваться командой ср. Но резервные копии должны полностью соответствовать оригиналам. Самое время вспомнить о флажке – р, установка которого позволяет сохранить в копии все атрибуты оригинала. Если, возвращаясь к предыдущему примеру, вести команду:

$ ср – р /tmp/TheFile

…копия будет неотличима от оригинала:

-rw-r--r – I userl users 16992 Apr 5 12:10 TheFile

Еще одна проблема, связанная с копированием файлов – копирование символических ссылок. Как было сказано в предыдущей главе, символическая ссылка – это указатель на файл из другого каталога. При помощи логических ссылок создается ситуация, при которой файл находится как бы одновременно в нескольких местах. При обращении к ссылке происходит фактически обращение к файлу, на который она указывает.

При обычном копировании символической ссылки происходит копирование не ее самой,,а файла, на который она указывает. Например, если бы в предыдущем примере TheFile было именем символической ссылки:

Irwxrwxrwx 1 userl users 16992 Apr 5 12:10 TheFile OtherFile

…то результат ввода команды:

$ ср /tmp/TheFile – /NewFile

…был бы следующим:

-rw-rw-r – 1 user2 users 16992 Apr 5 13:10 NewFile

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

Irwxrwxrwx 1 user2 users 2 Apr 5 13:10 NewFile /tmp/OtherFile

В команде ср для этого предусмотрен флажок. Флажок -d отменяет разыменование ссылки. Команда копирования принимает вид:

S ср – d /tmp/TheFile – /NewFile

Попробуем подытожить сказанное. Как создать командой ср резервную копию существующего каталога со всеми подкаталогами? Это можно сделать при помощи сочетания двух рассмотренных флажков и рекурсивного копирования. Например, по команде:

$ ср – pdR TheDirectory /backups

…создается точная копия каталога TheDirectory в каталоге /backups /TheDirectory.

$ ср -a. TheDirectory /backups
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.