В Linux команда cp (copy) используется для копирования файлов из одного места в другое. Утилита может также копировать каталоги.
Исходный файл/каталог копируется в файл/каталог, заданный в параметре Целевой файл/каталог. Если целевой файл/каталог существует, то его содержимое заменяется без предупреждения.
Содержание
Синтаксис
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 является очень нужной. Надеюсь на то, что эта статья будет вам полезна. Успехов!