cp

Что делает команда cp в Linux

Команда cp в Linux используется для копирования файлов и каталогов в файловой системе. Это одна из самых часто применяемых утилит, особенно при работе в терминале. С помощью нее можно копировать одиночные файлы, целые директории, а также сохранять атрибуты и права доступа.

Синтаксис команды cp в Linux:

Bash
cp [опции] источник назначение

Например, чтобы скопировать файл file.txt в папку /home/user/backup, выполняется:

Bash
cp file.txt /home/user/backup/

Если нужно скопировать несколько файлов:

Bash
cp file1.txt file2.txt /home/user/backup/

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

Основные параметры команды cp в Linux

Понимание параметров помогает использовать команду cp в Linux более гибко. Ниже перечислены самые популярные и практичные ключи, которые применяются в повседневной работе.

Параметр -r (или —recursive)

Копирует каталоги рекурсивно, то есть со всем их содержимым:

Bash
cp -r /source/folder /destination/

Без этого параметра команда не сможет скопировать директорию, так как по умолчанию она работает только с файлами.

Совет: при копировании больших каталогов лучше использовать -v вместе с -r, чтобы видеть процесс копирования.

Параметр -v (или —verbose)

Выводит подробную информацию о процессе копирования. Например:

Bash
cp -v file.txt /backup/

Результат:

Bash
'file.txt' -> '/backup/file.txt'

Это удобно для контроля, особенно при массовом копировании множества файлов.

Параметр -i (или —interactive)

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

Bash
cp -i data.txt /backup/data.txt

Если файл уже есть, появится запрос:

Bash
cp: overwrite '/backup/data.txt'? 

Пользователь сможет выбрать, перезаписывать или нет.

Совет: этот флаг полезно использовать при ручном копировании, чтобы избежать потери данных.

Параметр -u (или —update)

Копирует только те файлы, которые новее, чем существующие в целевой директории. Это особенно полезно при резервном копировании:

Bash
cp -u *.txt /backup/

Такой подход экономит время и снижает нагрузку на систему.

Параметр -p (или —preserve)

Сохраняет права доступа, временные метки и владельцев:

Bash
cp -p config.conf /backup/

После копирования файл сохранит исходные атрибуты, что важно для системных и конфигурационных файлов.

Параметр -a (или —archive)

Архивный режим объединяет несколько опций: -r, -p и -d. То есть копирование будет рекурсивным, с сохранением прав и символьных ссылок:

Bash
cp -a /etc /backup/

Это идеальный вариант для создания точной копии каталога с его структурой.

Параметр -f (или —force)

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

Bash
cp -f file.txt /backup/

Этот вариант удобен в автоматизированных скриптах, когда подтверждение не требуется.

Параметр —backup

Создает резервные копии при перезаписи:

Bash
cp --backup file.txt /backup/

Если в папке назначения уже есть файл с тем же именем, будет создана копия, например file.txt~.

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

Чтобы освоить команду cp в Linux, полезно рассмотреть реальные сценарии.

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

Bash
cp notes.txt /home/user/docs/

Результат — файл notes.txt появится в директории /home/user/docs/.

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

Bash
cp index.html style.css script.js /var/www/html/

Здесь три файла копируются в одну директорию веб-сервера.

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

Bash
cp -r /var/log /mnt/backup/

Создает полную копию каталога /var/log вместе с его содержимым.

Копирование с сохранением структуры и прав

Bash
cp -a /etc/nginx /backup/configs/

Команда сохраняет все атрибуты, права и структуру конфигурационных файлов Nginx.

Копирование с подтверждением перезаписи

Bash
cp -i important.txt /backup/

Терминал запросит подтверждение, если файл уже существует.

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

Bash
cp -u /source/*.log /backup/logs/

Только изменённые или новые .log файлы будут скопированы в /backup/logs.

Практические советы по работе с cp

Совет 1: при автоматизации резервного копирования в bash-скриптах лучше использовать комбинацию -a и -v, чтобы видеть ход выполнения и быть уверенным в корректности копий.
Bash
cp -av /home/user/docs /mnt/backup/
Совет 2: для защиты данных от случайной перезаписи используйте alias:

Bash
alias cp='cp -i'

Теперь при вводе cp по умолчанию будет срабатывать интерактивный режим с подтверждением.

Частые ошибки при использовании команды cp в Linux

  1. Отсутствие прав доступа.
    Если вы получаете сообщение “Permission denied”, выполните копирование с sudo: sudo cp file.conf /etc/
  2. Неверный путь назначения.
    Команда не создаёт автоматически каталоги. Если указанного пути нет, копирование не произойдет. Создайте папку заранее: mkdir -p /backup/logs && cp *.log /backup/logs/
  3. Забытый флаг -r при копировании папок.
    Без -r команда выдаст ошибку: cp: -r not specified; omitting directory

Команда cp в Linux — незаменимый инструмент системного администратора и разработчика. Она проста, но при этом мощна, особенно в сочетании с другими утилитами командной строки. Освоив ключевые параметры и принципы работы, вы сможете эффективно управлять файлами, создавать резервные копии и автоматизировать процессы копирования в любых сценариях.