Как пользоваться командой cp в Linux
Копируем файлы и папки в терминале на примерах Manjaro и Linux Mint.
Эта статья для тех, кто только перешёл на тёмную сторону отказался от Windows или macOS и открыл для себя терминал. Мы познакомимся с командой cp в Linux, которая позволяет копировать файлы и папки из одного места в другое — на тот же диск, в другую директорию или на внешний носитель. Разберём всё по шагам на простых примерах. Рекомендуем в процессе чтения повторять за нами, чтобы быстрее освоиться в системе.
Содержание
- Выбираем окружение и проверяем команду cp в терминале
- Знакомимся с синтаксисом и копируем первый файл
- Копируем файл с переименованием
- Копируем сразу несколько файлов
- Копируем папку целиком
Выбираем окружение и проверяем команду cp в терминале
Любой Linux-дистрибутив состоит из множества компонентов. Один из них — пакет GNU Coreutils, в который входят стандартные команды для работы с файлами и директориями. Поэтому, если ваша операционная система загрузилась и терминал открывается, команда cp на месте и готова к работе.
Далее мы будем показывать примеры на дистрибутивах Manjaro и Linux Mint. Это представители двух популярных семейств, которые часто используют новички. Так вы увидите, что команда cp работает одинаково, независимо от окружения, а ещё познакомитесь с разными подходами к установке пакетов.
Manjaro — дистрибутив семейства Arch, который развивается по модели rolling release. Это значит, что обновления выходят постоянно, без крупных релизов по расписанию. Такой формат подойдёт тем, кто хочет быстрее получать новые версии программ и не против регулярных апдейтов. За установку и обновление софта в Manjaro отвечает менеджер пакетов pacman.
Давайте сразу проверим, что cp доступна в системе. Введите в терминале:
type -a cp
cp --versionВы увидите, что исполняемый файл находится по адресу /usr/bin/cp, а также версию пакета и имена авторов — это подтверждает, что всё работает.

Скриншот: Manjaro / Skillbox Media
Linux Mint — дистрибутив семейства Debian. Его часто выбирают те, кто хочет безболезненно перейти с Windows: здесь привычный интерфейс, понятные системные настройки и много предустановленных программ. За установку и обновление пакетов в Mint отвечает менеджер apt. Повторим предыдущие команды в терминале и получим аналогичный результат.

Скриншот: Linux Mint / Skillbox Media
Если по какой-то причине вывод пустой, попробуйте установить пакет вручную. Вот команда для Manjaro и других Arch-подобных дистрибутивов:
sudo pacman -S coreutils
А это команда для Linux Mint и других Debian-based дистрибутивов:
sudo apt install coreutils
Но такое случается редко. Если пакет coreutils окажется повреждён, вероятно, у вас серьёзные неполадки с системой, и проще её переустановить.
Знакомимся с синтаксисом и копируем первый файл
Перед копированием файлов создадим рабочую папку cp-test и подпапку backup. Затем перейдём в cp-test и добавим три текстовых файла:
mkdir -p ~/cp-test/backup
cd ~/cp-test
echo "Это основной файл" > notes.txt
echo "Список задач" > todo.txt
echo "Идеи для проекта" > ideas.txtПосле выполнения команд в домашней директории у вас появится папка ~/cp-test/ с тремя текстовыми файлами: notes.txt, todo.txt и ideas.txt. Папка backup/ пока пустая — она пригодится нам чуть позже.


Теперь познакомимся с синтаксисом команды cp в Linux. Он очень простой:
cp [опции] <источник> <назначение>Здесь <источник> — файл или папка, которую нужно скопировать, а <назначение> — место, куда мы копируем. [опции] — дополнительные флаги (настройки запуска), которые позволяют изменить поведение команды.
Самый простой вариант — скопировать файл в уже существующую папку:
cp notes.txt backup/После выполнения команды файл notes.txt останется на месте, а в папке backup/ появится его копия. Проверить результат можно через ls backup/.


Если вы часто копируете файлы, вместо ls просто добавьте флаг -v — тогда команда cp будет выводить, какие файлы и куда она скопировала:
cp -v notes.txt backup/Терминал выведет:
'notes.txt' -> 'backup/notes.txt'

Копируем файл с переименованием
Если вместо папки в <назначении> указать путь с новым именем, cp скопирует файл и сразу его переименует:
cp notes.txt backup/notes_backup.txtТеперь в папке backup/ два файла: notes.txt и notes_backup.txt.


Копируем сразу несколько файлов
Первый способ — перечислите нужные файлы через пробел, а в качестве последнего аргумента укажите папку назначения:
cp notes.txt todo.txt ideas.txt backup/Ещё один способ — использовать маску по расширению. Это удобно, когда нужно скопировать сразу все файлы одного типа. Однако и здесь не забывайте в конце указывать папку назначения — без этого аргумента cp выдаст ошибку:
cp *.txt backup/Воспользуемся первым способом, поскольку он покажет одно из различий между выбранными дистрибутивами. В Manjaro после выполнения команды в терминале появится предупреждение: «cp: переписать 'backup/notes.txt'?»

Такое поведение связано не с самой командой cp, а с настройками оболочки. В разных дистрибутивах могут быть настроены алиасы — это псевдонимы команд, которые автоматически добавляют к ним флаги. В Manjaro cp по умолчанию является алиасом для cp -i, поэтому система спрашивает подтверждение перед перезаписью без каких-либо дополнительных флагов. Проверить, есть ли алиас в вашей системе, можно командой type -a cp.

В Linux Mint алиаса нет, поэтому та же команда просто перезапишет дублирующий файл в папке backup/ без предупреждения в терминале.

Чтобы управлять перезаписью файлов независимо от дистрибутива и настроек алиасов, вы можете вручную прописать один из следующих флагов:
cp -i # Спросит подтверждение перед перезаписью
cp -n # Пропустит файл, если он уже существует
cp --backup # Сохранит старую версию с суффиксом ~
cp -u # Копирует только изменённые или новые файлыДавайте вернёмся к Linux Mint и добавим флаг -i:
cp -i notes.txt backup/notes.txtПосле этого терминал запросит подтверждение, как и в Manjaro.

Копируем папку целиком
По умолчанию cp копирует только файлы. Поэтому, если вы попробуете скопировать папку без дополнительных флагов, команда выдаст ошибку. Чтобы скопировать каталог вместе со всем содержимым, используйте опцию -r (recursive). Например, скопируем папку backup/ на рабочий стол:
cp -r backup/ ~/Desktop/


Скриншот: Linux Mint / Skillbox Media
Флаг -r копирует папку со всем содержимым, однако не сохраняет метаданные файлов — дату создания, права доступа и владельца. Если по каким-то причинам вам может понадобиться эта информация — добавьте флаг -a:
cp -a backup/ ~/Desktop/Запомнить
Мы познакомились с основными возможностями команды cp в Linux. Давайте кратко повторим всё, что может пригодиться в повседневной работе:
- cp <источник> <назначение> — базовый синтаксис для копирования;
- cp -v — выводит в терминал то, что было скопировано;
- cp -i — спрашивает подтверждение перед перезаписью;
- cp -n — пропускает файлы, которые есть в папке назначения;
- cp --backup — сохраняет старую версию файла с суффиксом ~;
- cp -u — копирует только новые или изменённые файлы;
- cp -r — копирует папку целиком;
- cp -a — копирует папку с сохранением всех атрибутов.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!
