Команда CP

Описание команды cp

cpКопирует файлы и директории из одного места в другое.

Синтаксис

cp что_копируем куда_копируем

что_копируем — файл, несколько файлов, директория или несколько директорий, которые необходимо скопировать.

куда_копируем — название файла, в который выполняется копирование другого файла, или директория, в которую копируются исходные файлы или директории.

Опции

-a или --archiveТо же, что и -dR --preserve=all--attributes-onlyНе копировать содержимое файла. Скопировать только атрибуты файла.--backup=МЕТОДЕсли файл назначения существует, то создать для каждого такого файла резервную копию.

МЕТОД определяет, каким образом формируется имя резервной копии. МЕТОД может принимать значения:

  • none или off — не делать резервных копий, даже если включена опция --backup
  • numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt~2~).
  • existing или nil — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple.
  • simple или never — делать обычные резервные копии (пример: myfile.txt~).
-bТо же, что и --backup, но без аргументов.--copy-contentsСкопировать содержимое специальных файлов (файлов устройств и FIFO) при рекурсивном копировании. Данную опцию использовать не рекомендуется.-dТо же, что и --no-dereference --preserve=links-f или --forceЕсли файл назначения существует и не может быть открыт, то удалить его и попытаться снова (данная опция игнорируется, если используется опция -n).-i или --interactiveВывести запрос на подтверждение перезаписи существующего файла.-HПереходить по символическим ссылкам, указанным в качестве источника.-n или --no-clobberНе перезаписывать существующие файлы.-P или --no-dereferenceНикогда не разыменовывать символические ссылки. Ссылки копируются, как символические ссылки.-pТо же, что и --preserve=mode,ownership,timetamps--preserve=СписокАтрибутовСохранять у файлов атрибуты, указанные через запятую в списке СписокАтрибутов
Если возможно, то можно использовать дополнительные атрибуты: context, links, xattr, all--no-preserve=СписокАтрибутовНе сохранять атрибутиы, указанные в списке СписокАтрибутов--parentsФормировать результирующее имя (результирующий путь) каждого копируемого файла с учетом полного пути, который указан для данного файла.

Например, при использовании команды cp --parents a/b/myfile dstdir, файл myfile будет скопирован в директорию dstdir/a/b. То есть будут созданы промежуточные директории.-R или -r или --recursiveКопировать директории. Используется рекурсивное копирование — копируются директории и все их содержимое.--reflink=КОГДАСоздавать или не создавать «легкую» клонированную копию файла, если данная функциональность поддерживается файловой системой.

КОГДА может принимать значения:
always — всегда создавать «легкую» копию файла. Создается ссылка на исходные данные. Фактического копирования данных не происходит. Блоки данных копируются только тогда, когда они изменяются.
auto — создается обычная полная копия.--remove-destinationУдалить каждый существующий файл.--sparse=КОГДАОпция задает то, как будет выполняться копирование разреженных (sparse) файлов. Разреженный файл — это файл, в котором последовательности нулевых байтов (дыры) заменены на информацию об этих последовательностях. То есть в метаданных файла содержится список дыр.

КОГДА может принимать значения:
auto — (поведение по умолчанию) копировать разреженные файлы в разреженные файлы.
always — результирующий файл всегда разреженный, если в исходном есть достаточное количество нулевых последовательностей.
never — не делать результирующие файлы разреженными.--strip-trailing-slashesУдалить у каждого исходного файла символ слеш / на конце.-s или --symbolic-linkСоздать символические ссылки вместо копирования.-s СУФФИКС или --suffix=СУФФИКСИзменить символ суффикса, который добавляется к именам резервных копий (при использовании опции --backup). По умолчанию СУФФИКС равен значку тильды ~-t ДИРЕКТОРИЯ или --target-directory=ДИРЕКТОРИЯСкопировать все исходные файлы в ДИРЕКТОРИЮ-T или --no-target-directoryСчитать, что файл назначения это обычный файл.-u или --updateПеремещать только если исходный файл новее, чем файл назначения или если файл-назначения отсутствует.-v или --verboseВыводить информацию о каждом файле, который обрабатывает команда cp[/i].-x или --one-file-systemПропускать директории, расположенные на других файловых системах.-ZУстановить контекст SELinux для результирующего файла в значение по умолчанию.--context=CTXУстановить контекст SELinux или SMACK в значение CTX.--helpПоказать справку по команде cp.--versionПоказать версию утилиты cp.

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

Скопировать файл в другую директорию

Скопируем файл myfile.txt в директорию mydir:

cp myfile.txt mydir


Скопируем файл myfile1.txt в новый файл myfile2.txt

cp myfile1.txt myfile2.txt

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

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

cp /etc/config/myfile1.txt /home/pupkin/myfile1.txt /mnt/some/myfile3.txt mydir

Скопировать файл с подтверждением

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

cp -i myfile1.txt myfile2.txt
cp: переписать 'myfile2.txt'? y

Показать информацию о копируемых файлах

При использовании опции -v выводится информация о том, какие файлы и куда копируются.

cp -v myfile1.txt myfile2.txt mydir/
'myfile1.txt' -> 'mydir/myfile1.txt'
'myfile2.txt' -> 'mydir/myfile2.txt'

Скопировать директорию

Чтобы скопировать директорию и все ее содержимое нужно использовать опцию -r

cp -r /home/pupkin/mydir /mnt/usbflash

Скопировать только если файлы новее

Скопируем файлы вида myfile*.txt (например, это могут быть файлы myfile1.txt myfile10.txt myfile2.txt) в директорию mydir, но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.

cp -u myfile*.txt mydir

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

Чтобы существующие файлы не перезаписывались, используется опция -n

cp -n /home/pupkin/mydir /mnt/usbflash

Скопировать только атрибуты

Скопируем только атрибуты файла. Содержимое файла не копируется.

cp --attributes-only myfile1.txt myfile2.txt

Создать резервную копию для результирующих файлов, если они существуют

Скопируем файл myfile1.txt в файл myfile2.txt. Если файл myfile2.txt существует, то будет создана его резервная копия.

cp -b myfile1.txt myfile2.txt


Принудительно перезаписывать существующие файлы назначения

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

cp -f myfile1.txt myfile2.txt

Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0