Как удалить файл или папку в Linux

Ключевые понятия в одну строчку
- rm — удалить файл или каталог (гибкая и мощная команда).
- rmdir — удалить только пустой каталог.
- unlink — удалить единственную жёсткую ссылку на файл.
- -r — рекурсивно (для каталогов).
- -f — принудительно, без подтверждения.
Основные команды
Linux предоставляет три простые утилиты для удаления из терминала: unlink, rm и rmdir. Ниже показаны самые распространённые варианты применения.
Удаление с помощью unlink
unlink filenameunlink удаляет одну жёсткую ссылку на файл. Этой командой нельзя удалить несколько файлов за раз. Для массового удаления используйте rm.
Удаление простого файла с помощью rm
rm filenameЕсли файл защищён от записи, rm запросит подтверждение. Это механизм защиты системы: многие системные файлы имеют атрибут защищённости.
Пример запроса при удалении защищённого файла
rm: remove write-protected regular empty file 'filename'?Удаление нескольких файлов
rm filename1 filename2 filename3Удаление всех файлов с расширением
rm *.txtИнтерактивное удаление с подтверждением для каждого файла
rm -i *.txtПринудительное удаление без подсказок
rm -f filename1 filename2Объединение флагов
rm -iv *.docxУдаление папок и каталогов
Для папок доступны rmdir и rm. Главное отличие: rmdir удаляет только пустые каталоги; rm может удалить и непустые, если указать соответствующие флаги.
Удаление пустой папки
rmdir /path/to/directoryЭквивалент с rm для пустой папки
rm -d /path/to/directoryУдаление нескольких папок
rm -r /dir1 /dir2 /dir3Рекурсивное удаление непустой директории
rm -r /path/to/directoryПринудительное рекурсивное удаление без подтверждений
rm -rf /path/to/directoryВажно: rm -rf — мощная команда. Ошибка в пути может повлечь серьёзную потерю данных.
Дополнительные флаги и их смысл
- -i — интерактивно, спрашивать подтверждение для каждого файла.
- -f — форсированно, игнорировать несуществующие файлы и не запрашивать подтверждений.
- -r или -R — рекурсивно удалять каталоги и их содержимое.
- -v — подробно, выводить список удаляемых файлов.
- -d — удалить пустой каталог.
Комбинации флагов дают гибкость. Хорошая практика — сначала выполнить rm с -i или с -v, чтобы убедиться в ожидаемом результате.
Когда команды не сработают — контрпримеры
- rmdir не удалит каталог, если в нём есть файлы или поддиректории.
- rm не сможет удалить файлы, к которым у пользователя нет прав; в этом случае требуется sudo или смена прав.
- Если файл открыт другим процессом, он всё равно может быть удалён на уровне файловой системы, но процесс продолжит работать до закрытия дескриптора; для безопасного удаления в таких случаях остановите сервис.
Безопасность и восстановление
Важно понимать границы восстановления. Удаление через rm обычно удаляет указатель на данные, а не сами битовые последовательности. До перезаписи восстановление возможно, но не гарантировано.
Опции для более безопасного удаления
- shred — многократная перезапись файлов перед удалением. Подходит для чувствительных данных, но зависит от файловой системы.
- srm или secure-delete — специализированные утилиты для безопасной очистки.
Восстановление данных
- Можно попробовать утилиты типа extundelete, testdisk или photorec для файловых систем ext, если данные ещё не перезаписаны.
- Для LVM, RAID и зашифрованных разделов восстановление сложнее; при важности данных лучше обратиться к специалистам.
Примечание: соблюдайте требования обработки персональных данных и соответствие политике безопасности при удалении файлов, содержащих персональные данные.
Альтернативные подходы
- Использовать графический файловый менеджер и корзину для безопасного удаления обычных пользовательских файлов.
- Установить и использовать trash-cli для работы с корзиной из терминала (безопаснее, чем мгновенное rm).
- Перемещать большие или критичные данные на архивный носитель перед удалением.
Пример удаления в корзину через trash-cli
trash-put sensitive.docxПрактические приёмы и эвристики
- Прежде чем запускать rm -rf, выполните dry run с find или ls, чтобы убедиться в путях.
- Пример: find /path -name ‘*.log’ -print
- Всегда делайте резервные копии важных данных.
- Для скриптов лучше использовать полные абсолютные пути и избегать wildcard’ов без проверки.
- Для автоматизации используйте тестовую среду, чтобы предотвратить удаление продуктивных данных.
Пошаговый SOP для безопасного удаления
- Определите цель удаления и убедитесь, что у вас есть резервные копии.
- Проверьте права доступа к файлам: ls -l /path.
- Выполните проверочный вывод: ls or find для списка целевых файлов.
- Запустите rm с -i или -v для ручной проверки.
- Если нужно автоматическое удаление в скрипте, логируйте удаляемые пути и тестируйте на стенде.
- При удалении чувствительных данных используйте shred или srm.
Ролефокусированные чеклисты
Для разработчика:
- Убедиться, что удаляемые файлы не используются в CI/CD.
- Выполнить тесты на стенде.
- Использовать rm -i при первом прогоне.
Для системного администратора:
- Проверить права и владельцев.
- Выполнить резервную копию конфигураций.
- Подготовить команду отката или план восстановления.
Для пользовательского рабочего стола:
- Удалять через GUI или trash-cli.
- Очистить корзину, если требуется окончательное удаление.
Критерии приёмки
- Все ненужные файлы удалены из целевой директории.
- Отсутствует побочное удаление важных файлов или директорий.
- Есть лог или отчёт о выполненной операции.
- При необходимости выполнены процедуры надёжного удаления для конфиденциальных данных.
Тестовые сценарии
- Удаление одиночного файла: создать тестовый файл, выполнить rm и убедиться, что файла нет.
- Удаление нескольких файлов с шаблоном: создать набор файлов .tmp и проверить, что rm .tmp удалил только их.
- Рекурсивное удаление: создать структуру каталогов с файлами и выполнить rm -r testdir; проверить отсутствие testdir.
- Проверка защиты: пометить файл как read-only и проверить, что rm запрашивает подтверждение без -f.
Советы по совместимости и переносимости
- Поведение rm и rmdir стабильно на большинстве дистрибутивов GNU/Linux.
- На системах с альтернативными шеллами или встроенными командами (например BusyBox) некоторые флаги могут отсутствовать. Проверяйте man rm перед выполнением на существенно отличающейся системе.
Короткий глоссарий
- Жёсткая ссылка — указатель в файловой системе на блоки данных; несколько имён могут ссылаться на одни данные.
- Рекурсивное удаление — удаление каталога со всем его содержимым.
- Перезапись — многократная запись случайных данных поверх файла для затруднения восстановления.
Часто задаваемые вопросы
Q: Можно ли восстановить файл после rm
A: Часто нет гарантии. Если данные не были перезаписаны, восстановление возможно с помощью специальных инструментов, но успех зависит от файловой системы и активности диска.
Q: Чем отличается rm -r и rm -rf
A: rm -r рекурсивно удаляет каталоги и может запрашивать подтверждение для защищённых файлов. rm -rf добавляет принудительное удаление без запросов.
Q: Как безопасно удалить конфиденциальный файл
A: Используйте shred или srm для многократной перезаписи перед удалением, или шифруйте данные до записи, чтобы при удалении ключей данные стали недоступны.
Короткое итоговое резюме
Удаление в Linux — простая операция, но требующая осторожности. Используйте интерактивные флаги при ручной работе, автоматизируйте с логированием, применяйте средства безопасного удаления для конфиденциальных данных и всегда держите актуальные резервные копии.
Важно: перед массовым удалением выполните проверочный вывод командой ls или find, и никогда не запускайте rm -rf как root без полной уверенности в путях.
Похожие материалы
Trello для фрилансера — управление проектами и клиентами
Идеальная фотосессия беременных: 6 ключевых советов
Слои в фотографии: добавить глубину и выразительность
Как делать лучшие headshot-портреты
Как снимать отличные фото на вечеринке