← Назад к вопросам

Как скопировать файл в Linux?

1.0 Junior🔥 121 комментариев
#CI/CD и DevOps#Linux

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Методы копирования файлов в Linux

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

Основные команды и инструменты

1. Команда cp

Это стандартная и наиболее часто используемая команда для копирования файлов и директорий в командной оболочке. Она является частью coreutils и присутствует в любой дистрибуции Linux.

Базовый синтаксис:

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

Примеры использования:

  • Копирование одного файла в текущую директорию:
cp /path/to/source/file.txt .
  • Копирование файла с указанием нового имени:
cp original.txt copy.txt
  • Копирование всей директории рекурсивно (с сохранением структуры):
cp -r /source/directory /destination/directory

Ключевые опции команды cp:

  • -r или -Rрекурсивное копирование директорий и их содержимого
  • -i — интерактивный режим (спрашивает подтверждение при перезаписи)
  • -u — копирует только если файл источника новее или отсутствует в назначении
  • -v — вывод подробной информации (verbose)
  • -p — сохранение атрибутов файла (права доступа, время модификации)
  • -a — архивное копирование (сохраняет все атрибуты, рекурсивно, для директорий)

2. Команда rsync

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

Основные преимущества:

  • Поддержка инкрементного копирования (передаёт только измененные части файлов)
  • Возможность копирования через сеть с использованием SSH
  • Проверка целостности данных
  • Поддержка сохранения всех файловых атрибутов

Пример использования:

rsync -avh /local/source/ user@remote_host:/remote/destination/

Опции -a (архивный режим), -v (verbose), -h (человекочитаемые размеры).

3. Команда scp

Специализированный инструмент для копирования файлов между системами через SSH. Используется для безопасной передачи данных.

Пример синхронизации локального файла на удаленный сервер:

scp local_file.txt user@remote_server:/path/to/destination/

4. Использование cat и потоков

Можно использовать комбинацию команд для создания копий через потоки данных.

Пример:

cat source_file > destination_file

Или для копирования с сохранением прав:

cat source_file | tee destination_file

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

  1. Различия между cp и rsync: Для локального копирования небольших файлов cp быстрее и проще. Для синхронизации директорий, особенно с сохранением метаданных и при работе через сеть, rsync является оптимальным выбором.

  2. Сохранение атрибутов: При копировании системных файлов или для резервного копирования часто необходимо сохранить права (chmod), владельца (chown) и временные метки. Для этого используются опции -pcp) или -a (в обоих командах).

  3. Копирование специальных файлов: Для копирования символьных ссылок (-P в rsync сохраняет их как ссылки, -L преобразует в реальные файлы). Бинарные файлы копируются без изменений.

  4. Обработка больших файлов: При работе с файлами размером в гигабайты или при копировании миллионов мелких файлов важно учитывать:

    • Использование rsync с опцией --partial для возможности прерывания и продолжения передачи
    • Проверку доступного места на диске перед началом операции
    • Мониторинг процесса с помощью инструментов (pv для визуализации прогресса)

Пример сложного копирования с условиями

Предположим, нужно скопировать все .log файлы из директории /var/log/, которые были изменены в последние 7 дней, сохраняя их структуру и атрибуты:

find /var/log -name "*.log" -mtime -7 -exec cp -a {} /backup/logs/ \;

Или с использованием rsync с фильтрацией:

rsync -avh --include="*.log" --exclude="*" /var/log/ /backup/logs/

Заключение

Выбор метода копирования зависит от конкретной задачи:

  • Локальное копированиеcp
  • Синхронизация/резервное копированиеrsync
  • Передача между серверами через SSHscp или rsync

Для автоматизации в скриптах важно учитывать обработку ошибок, проверку существования файлов и директорий, а также добавление логирования операций. В современных системах также могут использоваться инструменты на основе Python (shutil.copy) или Go, но командные инструменты остаются основными для администрирования Linux.

Как скопировать файл в Linux? | PrepBro