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

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

• 4 min read • Linux • Обновлено 24 Nov 2025
Копирование каталогов в Linux с помощью cp
Копирование каталогов в Linux с помощью cp

Терминал с командами для копирования директорий в Linux

Зачем это нужно

Копирование каталогов часто требуется при резервном копировании, миграции данных, подготовке тестовой среды или переносе проектов. Команда cp встроена в GNU coreutils и доступна в большинстве дистрибутивов Linux.

Основной синтаксис

Короткое определение: cp создаёт копии файлов и папок. Основной синтаксис команды — прост:

cp [опции] <исходный_путь> <путь_назначения>

Где <исходныйпуть> и <путьназначения> — это файлы или каталоги. Для каталогов обычно добавляют флаги, чтобы копирование охватывало содержимое.

Копирование одной папки

Если нужно скопировать одну папку в другую папку на том же диске:

cp /random /home

Однако если /random содержит вложенные папки и файлы, этого недостаточно — нужно рекурсивное копирование.

Рекурсивное копирование

Флаг -R (или -r) означает рекурсивно: копировать все вложенные каталоги и файлы.

cp -R /random /home

Флаг -a (архивный режим) — это удобный набор опций: он включает рекурсию и сохраняет большинство атрибутов (права, владельца, симлинки, временные метки). Рекомендуется при переносе целых деревьев:

cp -a /random /home

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

Чтобы скопировать несколько исходников в одну цель, перечислите их перед целевой папкой:

cp /random /personal /content /home

Или рекурсивно:

cp -R /random /personal /content /home

Если используете -a, то тоже можно перечислять несколько источников:

cp -a /random /personal /content /home

Полезные флаги и объяснения

  • -R, -r — рекурсивно копировать каталоги и их содержимое.
  • -a — архивный режим: рекурсивно + сохраняет атрибуты и симлинки.
  • -v — подробный вывод (show what’s being copied).
  • -u — копировать только если источник новее назначения или если файла назначения нет.
  • -p — сохранять права, владельца и временные метки.

Факты: флаги -a и -R решают наиболее частые задачи; -a предпочтительнее для полных переносов.

Когда cp не подходит или может подвести

  • Если нужно эффективно синхронизировать большие объёмы данных или копировать через сеть, rsync будет быстрее и гибче.
  • При копировании с сохранением прав и владельцев от root до root — cp -a обычно подходит, но при межфайловых системах или разных ОС возможно несоответствие атрибутов.
  • Для атомарных переносов с проверкой целостности лучше использовать rsync с контрольной суммой.

Альтернативы и сравнительная подсказка

  • rsync — для синхронизации, инкрементных копий и передачи по SSH.
  • tar + ssh — удобен для архивации и передачи целого дерева по сети.
  • scp/sftp — для простых удалённых копий (scp считается устаревающим; лучше rsync/ssh).

Мини‑методология: как безопасно скопировать важные данные

  1. Оцените объём и структуру (малые файлы vs большие бинарные файлы).
  2. Выберите режим: cp -a для локального полного переноса, rsync для больших/сетевых задач.
  3. Сделайте пробный запуск с флагом -v или dry-run (rsync –dry-run).
  4. Выполните копирование.
  5. Проверьте контрольные суммы/список файлов (например, ls -lR или sha256sum).

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

  • Новичок: использовать cp -R для папок, проверять результат через ls.
  • Системный администратор: предпочитать cp -a локально; для сети — rsync; запускать под root при необходимости сохранять владельцев.
  • Девопс/инженер релиза: автоматизировать через скрипты с логированием и проверкой хэшей.

Критерии приёмки

  • Все файлы из исходного каталога присутствуют в папке назначения.
  • Права и временные метки сохранены (если это требование) при использовании -a или -p.
  • Нет разрывов симлинков, если симлинки должны сохраняться.
  • Размеры и количество файлов совпадают по итоговой проверке.

Практические примеры и сниппеты

Копировать с подробным выводом:

cp -av /project /backup

Копировать только изменённые файлы:

cp -u -R /source /dest

Архивный перенос и проверка (rsync как альтернатива):

rsync -av --progress /source/ /dest/

Совместимость и нюансы

  • На GNU/Linux опции cp из coreutils обычно одинаковы; на macOS реализация cp может отличаться (архивный режим -a есть не всегда в той же форме).
  • При копировании между файловыми системами некоторые атрибуты (например, extended attributes или точные UID/GID) могут не сохраняться.

Ошибки и ситуации, которых стоит остерегаться

  • Перезапись файлов в целевой папке без предупреждения. Используйте -i для интерактивного запроса.
  • Недостаток прав: копирование под непривилегированным пользователем не сохранит владельца root.
  • Копирование в тот же каталог (ошибочный путь) может создать вложенные дубликаты.

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

Команда cp — простой и быстрый инструмент для копирования каталогов локально. Для рекурсивного копирования используйте -R, для «архивного» переноса — -a. Если нужна синхронизация, проверка целостности или передача по сети, рассмотрите rsync.

Важно: сначала протестируйте команды на неключевых данных и убедитесь, что сохранились необходимые права и атрибуты.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро