Гид по технологиям

Как копировать файлы в Linux с помощью cp

6 min read Linux Обновлено 19 Apr 2026
Как копировать файлы в Linux с помощью cp
Как копировать файлы в Linux с помощью cp

Как копировать файлы в Linux с помощью команды cp

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

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

Определение: cp — простая команда для создания копий файлов или каталогов с опциями контроля перезаписи и сохранения атрибутов.

Пользоваться cp просто: откройте терминал и перейдите (cd) в каталог с файлами, которые хотите копировать.

Синтаксис cp

Синтаксис очень похож на mv: указываете источники и одну цель.

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

Можно передать несколько источников, но назначение должно быть одно — файл или каталог.

Важно: если в качестве назначения указать каталог, копии файлов попадут внутрь этого каталога. Если указать новое имя файла — будет создан файл с таким именем.

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

Копия файла в том же каталоге с новым именем:

cp file.txt newfile.txt

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

Копия в подкаталог с новым именем:

cp file.txt Backup/newfile.txt

Копирование в каталог (оставить имя файла прежним):

cp file.txt Backup

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

cp file1.txt file2.txt file3.txt Backup

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

Использование подстановки (wildcard) для одномоментного копирования по шаблону:

cp *.txt Backup

Использование подстановки с cp

Подстановки удобны, если у файлов общая часть имени или расширение.

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

Чтобы скопировать каталог и все его содержимое, используйте ключ -R (рекурсивно):

cp -R Files Backup

Эта команда создаст внутри Backup копию каталога Files.

Если нужно скопировать содержимое каталога, но не сам каталог, используйте -T вместе с -R:

cp -RT Files Backup

Полезные опции cp

Ниже — часто используемые ключи, которые повышают безопасность и прозрачность операций.

  • -v — verbose. Показывает каждый копируемый файл.
cp -v file.txt newfile.txt

Опция verbose с cp

  • -i — interactive. Спрашивает подтверждение при перезаписи.
cp -i file.txt newfile.txt

Интерактивный режим cp

  • -p — preserve. Сохраняет атрибуты файла: владельца, права и время модификации.
cp -p file.txt Backup/
  • -a — archive. Комбинирует несколько опций (рекурсивно, сохраняет атрибуты, символические ссылки и т.д.). Полезно для резервных копий.
cp -a Sources Backup
  • -u — update. Копирует только если источник новее назначения или если назначения нет.
cp -u *.txt Backup

Практические советы и рекомендации

  • Всегда делайте dry-run логический план команд, прежде чем выполнять массовое копирование. Для этого сначала используйте ls с тем же шаблоном.
  • Для больших наборов файлов используйте -v или перенаправьте вывод в лог.
  • Если работаете с правами и владельцами, добавляйте -p или -a.
  • Чтобы избежать потерь, перед массовой операции сделайте тест на одном файле.

Когда cp не подходит

  • При копировании между машинами cp не работает напрямую. Используйте rsync, scp или tar+ssh.
  • Для огромных наборов данных с частой синхронизацией лучше rsync (экономит трафик и время).
  • Для побитовой клонирования дисков используйте dd или специальные инструменты.

Альтернативы и когда их выбирать

  • rsync — для синхронизации, инкрементальных копий и копирования по сети. Подходит для резервного копирования и миграции.
  • scp / sftp — копирование по SSH (удобно для одной-двух операций между хостами).
  • tar | ssh — упаковка в архив перед пересылкой (сохраняет структуру и права, полезно при копировании по сети).
  • cpdup / gcp (parallel cp) — альтернативы в специфичных дистрибутивах, могут иметь дополнительные возможности.

Ментальные модели и эвристики

  • Модель «источник → назначение»: всегда четко мысленно определяйте, что именно является источником, а что — местом назначения.
  • Правило трёх проверок: 1) список источников (ls), 2) наличие места назначения, 3) тест на одном файле.
  • Эвристика „предпочти всегда -i или -u при массовых операциях“ помогает избежать случайной перезаписи.

Чек-листы по ролям

Dev/Desktop-пользователь:

  • Убедитесь, что находитесь в правильной директории (pwd)
  • Просмотрите файлы для копирования (ls *.txt)
  • Сделайте копию одного файла с -v и проверьте результат

Администратор резервного копирования:

  • Используйте -a для сохранения атрибутов
  • Логируйте операции (stdout → лог)
  • Планируйте ротацию и удерживание резервов

DevOps/инженер развертывания:

  • Для межхостовой передачи выбирайте rsync или tar+ssh
  • Используйте –checksum (rsync) для точной проверки
  • Проверяйте права и владельцев после копирования

Мини‑методология безопасного копирования (шаги)

  1. Подготовка: ls и pwd — подтвердите расположение.
  2. Тест: cp -v один файл в целевой каталог.
  3. Массовая команда: cp с -i/-u/-a в зависимости от задачи.
  4. Проверка: diff или ls -l для убеждения, что всё скопировалось.
  5. Логирование: сохраняйте вывод и проверяйте ошибки.

Примеры команд-«чек-лист» (шпаргалка)

  • Простое копирование одного файла:
cp file.txt Backup/
  • Копирование каталога рекурсивно, с сохранением атрибутов:
cp -a Projects Backup/
  • Интерактивное копирование с выводом:
cp -iv file.txt Backup/
  • Копирование только новых или изменённых файлов:
cp -u *.txt Backup/

Советы по крайнему случаю и восстановлению

Если вы перезаписали файлы по ошибке:

  • Если у вас есть резервная копия, восстановите из неё.
  • Если нет, попробуйте утилиты восстановления (extundelete, testdisk) только на размонтированном разделе.

Важно: восстановление данных — не тривиальная процедура. Немедленно прекратите запись на диск и действуйте аккуратно.

Совместимость и примечания по версиям

GNU cp (в большинстве Linux) и BSD cp (в некоторых системах типа macOS) имеют близкий синтаксис, но опции могут отличаться. Проверяйте man cp в своей системе перед использованием продвинутых ключей.

Быстрая диаграмма принятия решения

flowchart TD
  A[Нужно скопировать файлы?] --> B{Между хостами}
  B -- Да --> C{Нужна синхронизация}
  B -- Нет --> D{Каталог или файлы}
  C -- Да --> E[Используйте rsync]
  C -- Нет --> F[Используйте scp или tar+ssh]
  D -- Каталог --> G[cp -a или cp -R]
  D -- Файлы --> H[cp с нужными ключами '-i -v -u']

Тесты и критерии приёмки

  • Копирование одного файла: новый файл существует и идентичен исходному (diff).
  • Рекурсивное копирование: структура каталогов и файлы совпадают.
  • Сохранение атрибутов: владельцы и время модификации совпадают при использовании -p или -a.

Небольшая галерея типичных ошибок и как их избежать

  • Ошибка: забыли указать каталог назначения. Решение: всегда проверяйте последний аргумент.
  • Ошибка: случайная перезапись. Решение: использовать -i или делать бэкап перед операцией.
  • Ошибка: потеря прав доступа. Решение: применять -p или восстанавливать права отдельно.

Безопасность и конфиденциальность

  • cp сам по себе не шифрует данные. При передаче по сети используйте SSH‑основанные методы (scp, rsync over ssh).
  • Проверьте права на файлы после копирования, чтобы не открыть доступ посторонним пользователям.

Краткое руководство для резервного копирования (SOP)

  1. Определите список источников.
  2. Выполните пробное копирование одного каталога с -a.
  3. Запустите массовый прогон с логированием и мониторингом свободного места.
  4. Проверить контрольные суммы нескольких случайных файлов.
  5. Архивируйте или удаляйте старые резервные копии по политике удержания.

Глоссарий — 1 строка

  • cp: copia — команда для копирования файлов и каталогов в Unix/Linux.

Часто задаваемые вопросы

Как скопировать каталог целиком?

Используйте рекурсивную опцию -R или ключ -a для сохранения атрибутов:

cp -a SourceDir Backup/

Как избежать перезаписи существующих файлов?

Добавьте -i для интерактивного подтверждения или -u для копирования только новых файлов:

cp -i file.txt Backup/
cp -u *.txt Backup/

Чем cp отличается от rsync?

cp прост и работает только локально. rsync эффективен при синхронизации, копировании по сети и инкрементальных обновлениях.


Короткое резюме

  • cp — базовая команда для копирования в Linux.
  • Используйте -R/-a для каталогов и -i/-v/-p для безопасности и прозрачности.
  • Для сетевых и инкрементальных задач рассматривайте rsync, scp или tar+ssh.

Завершение: практика делает работу в терминале быстрой и предсказуемой. Начните с простых команд, добавляйте опции по мере необходимости и всегда проверяйте назначения перед массовыми операциями.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Запуск Командной строки от имени администратора
Windows

Запуск Командной строки от имени администратора

Отключить напоминания Facebook Memories и скрыть их
Социальные сети

Отключить напоминания Facebook Memories и скрыть их

Как управлять cookie в Chrome, Firefox и Edge
Приватность

Как управлять cookie в Chrome, Firefox и Edge

Как управлять расширениями в Chrome, Edge, Vivaldi
Браузеры

Как управлять расширениями в Chrome, Edge, Vivaldi

Добавить пользовательские эмодзи в Discord
Discord

Добавить пользовательские эмодзи в Discord

Вентилируемая подставка для ноутбука — 3 DIY-плана
DIY

Вентилируемая подставка для ноутбука — 3 DIY-плана