Любой, у кого есть хотя бы небольшой опыт работы в 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. В этом случае система потребует подтверждения копирования поверх существующего файла.
-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 привыкают к кратким, не требующим набора длинных строк. Рассмотрим команду