Команда cp

Команда cp позволяет вызвать одноименную утилиту, предназначенную для копирования файлов и директорий. При этом оригиналы файлов и директорий остаются нетронутыми, а их копии могут иметь аналогичные или отличающиеся имена и располагаться как в той же директории (при условии изменения имени копии), так и в другой директории и даже в другой файловой системе.

Базовый синтаксис команды:

$ cp [параметры] <оригинал> <копия>

В качестве оригинала и копии могут использоваться имена и пути к файлам и директориям, причем в директорию могут копироваться срезу несколько файлов или других директорий. Утилита поддерживает множество параметров, но на практике используется лишь их малая часть. Параметр -f позволяет принудительно перезаписывать файлы, если в целевой директории уже существуют файлы с такими именами, параметр -n работает ровно противоположным образом, то есть, позволяет автоматически пропускать файлы с совпадающими именами, а параметр -u позволяет обновлять файлы, то есть, перезаписывать их только в том случае, если копируемые файлы являются более новыми. Если вы хотите принимать решения относительно перезаписи каждого из файлов, вы можете активировать интерактивный режим с помощью параметра -i. Для копирования директории со всеми ее файлами и поддиректориями следует использовать параметр -R, активирующий режим рекурсивного копирования. Если же нужно сохранить атрибуты файла или директории, следует использовать параметр -p; при использовании этого параметра сохраняются следующие атрибуты:

  • Метка времени модификации
  • Метка времени последнего доступа
  • Права доступа к файлу
  • Идентификатор владельца файла (UID)
  • Идентификатор группы владельцев файла (GID)
  • Списка контроля доступа (ACL)
  • Расширенные атрибуты (EA)

Примеры использования

Простое копирование файлов

Для создания копии файла в текущей директории может использоваться команда cp без каких-либо параметров.

$ cp file1.html file2.html

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

$ cp file1.html /home/alex/public_html/file2.html

Имя копии файла можно не указывать в том случае, если вы хотите создать копию файла с таким же именем:

$ cp file1.html /home/alex/public_html/

Копирование нескольких файлов в директорию

Для создания копий нескольких файлов в определенной директории следует перечислить имена всех этих файлов перед путем к целевой директории:

$ cp file1.html file2.html file3.html /home/alex/public_html/

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

$ cp -i *.html /home/alex/public_html/

Копирование директорий

Для простого копирования директории достаточно указать ее имя и путь к директории, в которую ее нужно скопировать:

$ cp images /home/alex/public_html/

Для копирования содержимого текущей директории со всеми поддиректориями следует использовать рекурсивный и интерактивный режимы, а также шаблон командной оболочки:

$ cp -Ri * /home/alex/public_html/images/