Команда cp позволяет вызвать одноименную утилиту, предназначенную для копирования файлов и директорий. При этом оригиналы файлов и директорий остаются нетронутыми, а их копии могут иметь аналогичные или отличающиеся имена и располагаться как в той же директории (при условии изменения имени копии), так и в другой директории и даже в другой файловой системе.
Базовый синтаксис команды:
$ cp [параметры] <оригинал> <копия>
В качестве оригинала и копии могут использоваться имена и пути к файлам и директориям, причем в директорию могут копироваться срезу несколько файлов или других директорий. Утилита поддерживает множество параметров, но на практике используется лишь их малая часть. Параметр -f позволяет принудительно перезаписывать файлы, если в целевой директории уже существуют файлы с такими именами, параметр -n работает ровно противоположным образом, то есть, позволяет автоматически пропускать файлы с совпадающими именами, а параметр -u позволяет обновлять файлы, то есть, перезаписывать их только в том случае, если копируемые файлы являются более новыми. Если вы хотите принимать решения относительно перезаписи каждого из файлов, вы можете активировать интерактивный режим с помощью параметра -i. Для копирования директории со всеми ее файлами и поддиректориями следует использовать параметр -R, активирующий режим рекурсивного копирования. Если же нужно сохранить атрибуты файла или директории, следует использовать параметр -p; при использовании этого параметра сохраняются следующие атрибуты:
Для создания копии файла в текущей директории может использоваться команда 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/