cp, mv, rm и mkdir: копировать, переносить и удалять файлы в Linux
Четыре команды для работы с файлами на сервере: cp копирует, mv переносит и переименовывает, mkdir создаёт папки, rm удаляет. У rm нет корзины, поэтому перед удалением делайте копию — ниже показано, как.
Содержание 8
Что сделать прямо сейчас
- Перейдите в нужную папку и посмотрите, что в ней:
cd /var/www/example.com, затемls -la— как это сделать. - Перед правкой файла сделайте копию:
cp file.txt file.txt.bak. - Перед удалением папки сделайте её копию:
cp -a old-site old-site.bak. - Удаляйте с подтверждением:
rm -i file.txt— rm спросит, и нужно ответитьy. - Если команда ответила ошибкой, найдите её в таблице ниже.
mkdir: создать папку
| Команда | Что сделает |
|---|---|
mkdir backup | создаст папку backup в текущей папке |
mkdir -p backup/2026/october | создаст всю цепочку папок разом |
mkdir -p backup | не ответит ошибкой, если папка уже есть |
mkdir -m 750 private | создаст папку сразу с правами 750 |
Без -p mkdir отвечает ошибкой со словами File exists, если папка уже есть, и No such file or directory, если нет папки уровнем выше. Что значат права вроде 750 — в статье Права на файлы в Linux: rwx, 644 и 755.
cp: скопировать
Сначала пишут, что копировать, потом — куда.
| Команда | Что сделает |
|---|---|
cp file.txt file.bak | копия файла рядом, под новым именем |
cp file.txt backup/ | копия файла в папку backup с тем же именем |
cp -r site site-copy | копия папки со всем содержимым |
cp -a site site-copy | то же, но с сохранением прав, владельца и дат |
cp -i file.txt backup/ | спросит, прежде чем заменить файл с тем же именем |
cp -n file.txt backup/ | не заменит файл, который уже есть |
cp -v file.txt backup/ | покажет, что скопировано |
Без -i и -n cp молча заменяет файл с тем же именем в папке назначения. Для папки сайта удобнее -a: копия получит те же права и владельца, что и оригинал. Чтобы сохранить владельца чужих файлов, команде нужны права администратора — запускайте её с sudo.
mv: переименовать или перенести
| Команда | Что сделает |
|---|---|
mv old.txt new.txt | переименует файл |
mv file.txt backup/ | перенесёт файл в папку backup |
mv old-site new-site | переименует папку — ключ -r не нужен |
mv -i file.txt backup/ | спросит, прежде чем заменить файл |
mv -n file.txt backup/ | не заменит файл, который уже есть |
Как и cp, без -i и -n mv молча заменяет файл с тем же именем. Если указать несколько ключей из -i, -f и -n, сработает последний.
rm: удалить
В терминале нет корзины: удалённый файл пропадает сразу. Вернуть его можно только из резервной копии — Резервные копии сайта.
| Команда | Что сделает |
|---|---|
rm file.txt | удалит файл |
rm -i file.txt | спросит про каждый файл |
rm -I *.log | спросит один раз, если файлов больше трёх |
rm -r old-site | удалит папку со всем содержимым |
rmdir empty-dir | удалит папку, только если она пустая |
rm -v file.txt | покажет, что удалено |
rm -i задаёт вопрос вида rm: remove regular file 'file.txt'?. Наберите y и нажмите Enter — файл удалится. Ответ n оставит файл на месте.
Чтобы не удалить лишнего
- Перед
rm -rпосмотрите, что внутри:ls -la old-site. - Пишите полный путь и перечитайте его перед Enter. Лишний пробел внутри пути превращает его в два разных пути, и rm удалит не то.
- Не добавляйте
-fпо привычке: этот ключ отключает все вопросы, а про несуществующие файлы rm промолчит. - Если в имени есть
, сначала посмотрите, что под него подходит:ls .log, и только потомrm *.log.
Корень / rm сам не удаляет — защита --preserve-root включена по умолчанию. Но от удаления папки сайта или домашней папки она не спасает.
Файл, имя которого начинается с минуса
rm примет такое имя за ключ. Поставьте перед именем -- или ./:
rm -- -file.txt
rm ./-file.txtОшибки и как их исправить
| Ответ | Что значит | Что сделать |
|---|---|---|
rm: cannot remove 'images': Is a directory | это папка, а не файл | для папки нужен rm -r images |
cp: -r not specified; omitting directory 'images' | папку копируют только с ключом | cp -r images images-copy |
rmdir: failed to remove 'images': Directory not empty | папка не пустая | посмотрите ls -la images; удалить всё — rm -r images |
cp: cannot stat 'x': No such file or directory | того, что копируете, нет | проверьте имя и папку командой ls |
rm: cannot remove 'x': No such file or directory | такого файла нет | проверьте имя и большие буквы |
cp: missing destination file operand after 'file.txt' | не сказано, куда копировать | допишите второй путь |
cannot move … to a subdirectory of itself | папку переносят внутрь неё самой | выберите папку назначения снаружи |
Permission denied | нет прав на файл или папку назначения | Permission denied в Linux |
Источники
- Справка mkdir для Ubuntu 24.04 — ключи -p и -m.
- Справка cp для Ubuntu 24.04 — ключи -r, -a, -i, -n, -p и -v.
- Справка mv для Ubuntu 24.04 — ключи -i, -n, -f и -v: из нескольких действует последний.
- Справка rm для Ubuntu 24.04 — ключи -r, -f, -i, -I, -d и -v, защита корня --preserve-root, удаление файла с минусом в начале имени.
- Справка rmdir для Ubuntu 24.04 — удаляет только пустые папки.
- Исходный код coreutils 9.4: remove.c — текст cannot remove … Is a directory.
- Исходный код coreutils 9.4: copy.c — тексты -r not specified; omitting directory и cannot move … to a subdirectory of itself.
- Исходный код coreutils 9.4: rmdir.c — текст failed to remove … Directory not empty.
Сверено 11 октября 2026 года.
Что почитать дальше
- ls, cd и pwdгде вы находитесь и как ходить по папкам.
- Как распаковать архив tar.gz и zipупаковать папку в архив перед удалением.
- Резервные копии сайтакак не потерять сайт.
- Права на файлы в Linux: rwx, 644 и 755что значат права 644, 755 и 750.
Проверено и обновлено: 11.10.2026