Копирование файлов
Любой, у кого есть хотя бы небольшой опыт работы в 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
Безусловно, вторая команда более удобочитаема, но кто же возьмется набрать такое на клавиатуре!
Содержание раздела