Команда Linux cp

Опубликовано admin - вт, 07/19/2022 - 13:57

В Linux команда cp (copy) используется для копирования файлов из одного места в другое. Утилита может также копировать каталоги.

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

Исходный файл/каталог копируется в файл/каталог, заданный в параметре Целевой файл/каталог. Если целевой файл/каталог существует, то его содержимое заменяется без предупреждения.

Содержание

Синтаксис

cp [ПАРАМЕТР]… ИСТОЧНИК НАЗНАЧЕНИЕ

Опции

-a, --archive
То же, что и -dPR --preserve=all
    --backup[=КОГДА]
Создавать резервную копию каждого целевого файла
-b
То же, что и --backup, но без аргумента
-d
То же, что и --no-dereference --preserve=link
-f, --force
Если невозможно открыть существующий файл, то удалить его и попробовать ещё раз (этот параметр игнорируется, если также указан параметр -n)
-i, --interactive
Спрашивать перед тем как переписывать (отменяет ранее указанный параметр -n)
-L, --dereference
Всегда следовать символьным ссылкам в ИСТОЧНИКЕ
-n, --no-clobber
Не перезаписывать существующий файл (отменяет ранее указанный ключ -i)
-p
То же, что и --preserve=mode,ownership,timestamps
    --preserve[=СПИС_АТТР]
Сохранять указанные атрибуты (по умолчанию: mode,ownership,timestamps) и, если возможно, дополнительные атрибуты: context, links, xattr, all
    --no-preserve=СПИС_АТТР
Не сохранять указанные атрибуты
    --parents
Добавить исходный путь к КАТАЛОГУ
-R, -r, --recursive
Рекурсивно копировать каталоги
-S, --suffix=СУФФИКС
Использовать для запасных копий заданный СУФФИКС
    --target-directory=КАТ
Скопировать все ИСТОЧНИКИ в КАТАЛОГ
-u, --update
Копировать только тогда когда исходный файл новее чем файл назначения, или когда файл назначения отсутствует
-v, --verbose
Пояснять что будет сделано

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

В домашнем каталоге мною были создвны каталоги Directory_Source и Directory_Target. В первый из них я поместил файлы readme и .vimrc.

Копирование файла

В пустой каталог назначения копируем файл readme:

oleg@mobile:~:$ cp Directory_Source/readme Directory_Target

В файл readme, скопированный в каталог назначения, копируем изменённый файл readme:

oleg@mobile:~:$ cp Directory_Source/readme Directory_Target/readme

В результате копирования содержимое файла readme было перезаписано без всякого предупреждения.

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

oleg@mobile:~:$ cp Directory_Source/readme .vimrc Directory_Target

Файлы были скопированы в каталог назначения:

oleg@mobile:~:$ ls -la Directory_Target
итого 20
drwxr-xr-x  2 oleg users  4096 июл 19 12:28 ./
drwx--x--x 68 oleg   100 12288 июл 19 12:28 ../
-rw-r--r--  1 oleg users     0 июл 19 12:28 readme
-rw-r--r--  1 oleg users  3740 июл 19 12:28 .vimrc

Предотвращение перезаписи существующих файлов

Для предотвращения перзаписи существующего файла используется опция -n:

oleg@mobile:~:$ cp -n Directory_Source/readme Directory_Target

При использовании опции -i система будет требовать подтвержения перезаписи файла:

o cp -i Directory_Source/readme Directory_Target
cp: переписать 'Directory_Target/readme'? 

От вас потребуется ответ y или n.

Создание автоматических резервных копий

В каталог назначения копируем изменённый файл readme:

oleg@mobile:~:$ cp -b Directory_Source/readme Directory_Target

Получаем следующий результат:

oleg@mobile:~:$ ls -la Directory_Target
итого 24
drwxr-xr-x  2 oleg users  4096 июл 19 12:48 ./
drwx--x--x 68 oleg   100 12288 июл 19 12:48 ../
-rw-r--r--  1 oleg users   145 июл 19 12:48 readme
-rw-r--r--  1 oleg users     0 июл 19 12:47 readme~
-rw-r--r--  1 oleg users  3740 июл 19 12:33 .vimrc

Как видим в каталоге сохранена резервная копия файла readme~.

Копирование каталога

oleg@mobile:~:$ cp -r Directory_Source Directory_Target

oleg@mobile:~:$ ls -la Directory_Target
итого 20
drwxr-xr-x  3 oleg users  4096 июл 19 12:58 ./
drwx--x--x 68 oleg   100 12288 июл 19 12:48 ../
drwxr-xr-x  2 oleg users  4096 июл 19 12:57 Directory_Source/

Теперь у каталога Directory_Target появился подкаталог Directory_Source.

Копирование лишь содержимого каталога

Для копирования содержимого исходного каталога в каталог назначения следует к имени исходного каталога добавить /.:

oleg@mobile:~:$ cp Directory_Source/. Directory_Target

Результат:

oleg@mobile:~:$ ls -la Directory_Target/
итого 24
drwxr-xr-x  2 oleg users  4096 июл 19 13:06 ./
drwx--x--x 68 oleg   100 12288 июл 19 12:48 ../
-rw-r--r--  1 oleg users   145 июл 19 13:06 readme
-rw-r--r--  1 oleg users  3740 июл 19 13:06 .vimrc

Копирование нескольких каталогов

Копирование нескольких каталогов или лишь их содержимого выполняется также, как и копирование одного каталога или его содержимого. Надо лишь перечислить все исходные каталоги.

Сохранение атрибутов при копировании

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

Заключение

Вы убедились в том, что в Linux команда cp является очень нужной. Надеюсь на то, что эта статья будет вам полезна. Успехов!

Поделиться с друзьями