Команда CP в Linux. Описание и примеры
Написать статью
Войдите, чтобы писать статьи

Команда cp

2

Команда cp в Linux

Описание команды 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.
-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

Команда cp backup

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

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

cp -f myfile1.txt myfile2.txt
Лайков: +2
войдите, чтобы ставить лайки
2
  • Опубликовано: 08.06.2019

Комментарии

Айс
30.10.2020
09:15
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Спасибо
Найс
31.10.2020
07:07
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Спасибо

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила