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

Копирование файлов в Linux: команда cp — руководство

5 min read Linux Обновлено 23 Dec 2025
Копирование файлов в Linux: команда cp — руководство
Копирование файлов в Linux: команда cp — руководство

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

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

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

Определение: cp копирует содержимое файла или дерева каталогов в новую позицию. Простая синтаксическая модель делает её доступной даже новичкам.

Важно: работа с cp выполняется в текущем каталоге терминала или в том, куда вы перейдёте командой cd.

Синтаксис cp

Общий синтаксис прост:

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

Можно указать несколько источников, но только одно назначение. Назначение может быть каталогом (куда поместятся копии), новым именем файла или и тем, и другим.

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

Чтобы создать копию файла в той же папке с другим именем:

cp file.txt newfile.txt

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

Чтобы скопировать файл в подкаталог:

cp file.txt Backup/newfile.txt

Если не нужно переименовывать файл, укажите только каталог назначения:

cp file.txt Backup

Для копирования нескольких файлов перечислите все источники перед назначением:

cp file1.txt file2.txt file3.txt Backup

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

Удобно использовать подстановочные символы (wildcards), например, чтобы скопировать все .txt файлы:

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

Использование опции -v с cp

  • -i — interactive, спрашивает подтверждение перед перезаписью существующих файлов.
cp -i file.txt newfile.txt

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

  • -p — preserve, сохраняет атрибуты: права, владельца и временные метки.
cp -p file.txt newfile.txt
  • -a — archive, эквивалентно -dR –preserve=all; полезно для точного зеркалирования, включая символьные ссылки и права.
cp -a SourceDir DestDir
  • -u — update, копирует только если источник новее или целевой файл отсутствует.
cp -u *.txt Backup

Частые ошибки и когда cp не подходит

  • Символьные ссылки: простое cp без -a скопирует содержимое ссылок, а не сами ссылки. Чтобы сохранить ссылки как ссылки, используйте -a.
  • Специальные файлы: устройства и FIFO могут быть неправильно скопированы без специальных опций, лучше использовать tar или rsync при переносе системных деревьев.
  • Большие объёмы данных и сеть: при копировании по сети или для инкрементных бэкапов rsync предпочтительнее — он экономит пропускную способность и время.
  • ACL и расширенные атрибуты: для сохранения xattr используйте cp –preserve=xattr или rsync -X.

Альтернативные инструменты

  • rsync — для зеркалирования, инкрементных копий и копий по сети. Очень гибкий и эффективный.
  • tar — упаковка в архив и распаковка подходит для переноса дерева файлов как единицы.
  • scp/sftp — простые средства для копирования по SSH (scp устарела, лучше использовать sftp или rsync по ssh).
  • dd — побитовая копия устройств и разделов.

Когда выбрать:

  • Для локальных простых копий достаточно cp.
  • Для резервных копий и сетевых переносов — rsync.
  • Для точного клонирования разделов — dd.

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

  1. Оцените объём и тип данных (много мелких файлов, большие файлы, символьные ссылки).
  2. Выберите инструмент: cp для простого, rsync для большого/инкрементного, tar для единой упаковки.
  3. Выполните тестовый прогон на небольшой выборке с -v и -n (для rsync) или -i для cp.
  4. Проверьте права и владельца целевых файлов (ls -l).
  5. При необходимости используйте -p или -a, чтобы сохранить метаданные.
  6. Документируйте команду и время операции.

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

  • Все необходимые файлы существуют в целевой директории.
  • Размеры и временные метки совпадают с источником, если это важно.
  • Права и владельцы сохранены при необходимости.

Чек-листы для ролей

Системный администратор:

  • Использовать rsync для системных бэкапов.
  • Проверить права и xattr (–preserve=xattr).
  • Тестировать на staging перед продакшеном.

Разработчик:

  • Для простых копий локальных файлов использовать cp -v.
  • Для синхронизации проектов применять rsync –exclude .git.

Оператор резервного копирования:

  • Автоматизировать с проверкой контрольных сумм.
  • Логи и уведомления об ошибках.

Шпаргалка команд

# Копировать файл в той же папке с новым именем
cp file.txt newfile.txt

# Копировать в подкаталог
cp file.txt Backup/

# Копировать несколько файлов в папку
cp a.txt b.txt c.txt Backup/

# Рекурсивно копировать папку
cp -R SourceDir DestDir

# Сохранить атрибуты и ссылки
cp -a SourceDir DestDir

# Подтверждение при перезаписи
cp -i file.txt Dest/

# Показать, что делает команда
cp -v file.txt Dest/

# Копировать только если источник новее
cp -u *.txt Backup/

# Сохранить расширенные атрибуты (если поддерживается)
cp --preserve=xattr -a SourceDir DestDir

Сравнение cp и rsync (кратко)

  • cp: простая локальная копия, быстрое понимание, неэффективен при больших объёмах и по сети.
  • rsync: инкрементная синхронизация, поддержка сети, экономит трафик, сложнее в настройке.

Таблица сравнения (кратко):

  • Скорость на локальном диске: cp ≈ rsync (без компрессии).
  • Инкремент: cp — нет, rsync — да.
  • Сохранение xattr/ACL: rsync поддерживает -X/–acls, cp имеет –preserve.
  • По сети: rsync лучше.

Примеры реальных команд

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

cp -a -v /var/www /backup/www-$(date +%F)

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

cp -u *.log /backup/logs

Инкрементная синхронизация с удалённым сервером (альтернатива cp для сети):

rsync -avz --delete /local/dir/ user@remote:/backup/dir/

Безопасность и права доступа

  • Операции копирования выполняются с правами текущего пользователя. Для доступа к файлам другого пользователя используйте sudo.
  • Проверяйте и корректируйте права после копирования: chmod и chown.
  • Для чувствительных данных думайте о шифровании при передаче по сети.

Частые сценарии отказа и обходные решения

  • Файлы меняются во время копирования: остановите сервис или используйте снапшоты/LVM.
  • Недостаток места на диске: проверяйте df -h перед запуском массовых копий.
  • Плохая производительность из-за большого числа мелких файлов: упакуйте в tar, затем распакуйте на месте назначения.

Короткая памятка (cheat sheet)

  • Простая копия: cp src dst
  • Рекурсивно: cp -R
  • Сохранить права: cp -p или cp -a
  • Подтверждение: cp -i
  • Показать действия: cp -v

Полезные советы и эвристики

  • Для безопасных бэкапов автоматизируйте rsync + проверку контрольных сумм.
  • Используйте -n или –dry-run (для rsync) при настройке сложных операций.
  • Предпочитайте -a для клонирования папок, чтобы минимизировать потерю метаданных.

Important: Перед массовыми операциями всегда делайте тестовую прогонку и резервную копию важных данных.

Итог

Команда cp — быстрый и прямой инструмент для копирования файлов в Linux. Она отлично подходит для локальных и мелкообъёмных задач. Для более сложных, сетевых или инкрементных сценариев используйте rsync или tar. Следуйте методике: тест > копия > проверка прав и целостности.

Ключевые шаги:

  • Понимайте объём и тип данных.
  • Выбирайте правильный инструмент (cp, rsync, tar).
  • Тестируйте и проверяйте метаданные.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Как включить iCloud Photos и синхронизировать фото
Технологии

Как включить iCloud Photos и синхронизировать фото

Aitum Vertical Plugin для OBS — вертикальный стриминг
Стриминг

Aitum Vertical Plugin для OBS — вертикальный стриминг

Как отформатировать SD‑карту на Mac
Руководство

Как отформатировать SD‑карту на Mac

Перенос чатов WhatsApp с iPhone на Android
Мобильные устройства

Перенос чатов WhatsApp с iPhone на Android

Как снимать ночью: избавляемся от смаза
Фотография

Как снимать ночью: избавляемся от смаза

Как блокировать мошеннические номера и спам‑звонки
Безопасность

Как блокировать мошеннические номера и спам‑звонки