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

       

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


Любой, у кого есть хотя бы небольшой опыт работы в DOS или окне DOS системы Windows, знает, что перетаскивание файлов из окна в окно— не единственный способ их копирования. Команда DOS copy предоставляет дополнительные возможности - например, использование подстановочных символов, - которые могут ускорить, упростить процесс и сделать его более эффективным, чем в Диспетчере файлов или Проводнике.

В Linux для копирования применяется команда ср (/bin/cp).

Основные операции копирования

Безусловно, простейшее применение команды ср - копирование файла из одного каталога в другой или создание дубликата в том же каталоге. Например, чтобы создать копию файла ThisFile, поместив ее в том же каталоге под именем ThisFile-Acopy, необходимо ввести следующую команду:

$ ср ThisFile ThisFile-Acopy

Если теперь заглянуть в указанный каталог при помощи команды 1s -1, то в нем окажется два файла абсолютно одинакового объема, но с разными датами создания. Дата создания нового

файла совпадет с датой копирования, первоначальный же останется неизменным. Изменение файлаThisFile-Acopy не затронет файл ThisFile.

Аналогично, можно копировать файл ThisFile в каталог /tmp (например, чтобы предоставить к нему доступ другому пользователю). Для этого воспользуйтесь следующей командой.

$ ср ThisFile /tmp

Если файл, копируемый в другой каталог, требуется еще и переименовать, следует ввести команду:



$ ср ThisFile /tmp/NewFileName

Не записывайте поверх существующего файла

Все дистрибутивы Linux имеют один существенный недостаток: при копировании файлов существует опасность записи копии поверх существующего файла, Предположим, у вас есть два файла- ThisF%le и NewFile. Если вы решите создать копию одного из них, введя команду

$ ср ThisFile NewFile

копия запишется поверх файла NewFile, что приведет к его утрате (если, конечно, вы не были настолько предусмотрительны, чтобы позаботиться о резервной копии).

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


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





Предотвращение ошибок


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

Один из них - установка флажка -Ь для создания резервных копий файлов и каталогов, поверх КОТОРЫХ производится копирование. По умолчанию резервной копии присваивается имя файла- оригинала с добавленным в конце знаком тильды (~). Таким образом, если воспользоваться командой



$ ср -b FileOne FileTwo



для копирования файла FileOne в существующий файл FileTwo, будет создана резер'вная копия последнего с именем FileTwo-.

Правило присвоения имен резервным копиям можно изменять установкой флажка -S или. Флажок -S служит для замены тильды в конце имени резервной копии другим символом. Например, по команде



$ ср -b -S _ FileOne FileTwo



резервной копии файла FileTwo будет присвоено имя FileTwo_.

Флажок — backup позволяет выбрать одну из трех возможных схем присвоения имен.



t


или

numbered.


Последовательная нумерация резервных копий: при многократном копировании образуется их последовательность вида FileName . ~1~, FileName . ~2~ и т.д.





nil или existing


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



never




или simple


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

Например, чтобы в рассмотренном примере была создана нумерованная резервная копия,

необходимо ввести команду



$ ср — backup= t FileOne FileTwo или




$ ср -backup=numbered FileOne FileTwo


Аналогично, вводом команды



$ ср -backup=never FileOne FileTwo и





$ ср --backup=simple FileOne FileTwo


создаются обычные резервные копии.

Флажок -b в Red Hat Linux 7.1 с этими опциями не работает.



Примечание


В Red Hat Linux 7.1 по-прежнему можно использовать флажок -v для управления схемой присвоения имен. Однако в будущих версиях ср этот флажок уже будет недоступен.



Альтернативные формы флажков


Вероятно, вы обратили внимание на разнообразие флажков команды ср, в котором нетрудно запутаться. К счастью, для каждого флажка предусмотрена длинная, но легко запоминаемая формаг



Краткая форма





Длинная форма



-I

— interactive (интерактивное)

-R

--recursive (рекурсивное)



— preserve (предохранить)



— no-dereference (без разыменования)



— archive (архивное)



— backup (резервное)

-S

--suffix (суффикс)

Длинные формы флажков более наглядны, но со временем пользователи Linux привыкают к кратким, не требующим набора длинных строк. Рассмотрим команду

$ ср -i -Ь -V simple -S _ -R ThisDir /tmp

Эта же команда с длинными флажками:



$ ср --interactive —backup --version-control simple --suffix _




->




—recursive ThisDir /tmp


Безусловно, вторая команда более удобочитаема, но кто же возьмется набрать такое на клавиатуре!


Содержание раздела