Ответ
Восстановление удаленных данных — сложная и ненадежная операция. Основной и единственный гарантированный метод — восстановление из резервной копии. Файловые системы не предназначены для удобного "undelete".
Экстренные действия при случайном удалении:
- Немедленно остановите запись на соответствующий диск/раздел. Если это база данных или приложение — остановите сервис.
- По возможности, размонтируйте (
umount) раздел, с которого были удалены данные, чтобы минимизировать перезапись блоков.
Попытки восстановления (если бэкапа нет): Эти методы работают только если данные не были перезаписаны и зависят от ФС.
- Для ext3/ext4: Используйте
extundelete. Смонтируйте диск в режиме только для чтения на другой системе.sudo apt-get install extundelete # Debian/Ubuntu sudo extundelete /dev/sdb1 --restore-all --output-dir /recovery/ - Для XFS: Возможности крайне ограничены. Можно попробовать
xfs_undelete, но он работает только если включено журналирование операций с метаданными (metadump). - Универсальные инструменты (сканирование по сигнатурам):
testdisk/photorecмогут найти остатки файлов (картинки, PDF, архивы) по их заголовкам, но имена и пути будут потеряны.sudo photorec /dev/sdb1
Практика DevOps: Предотвращение, а не восстановление
- Регулярные бэкапы: Используйте
rsync,borgbackup,resticилиduplicity. Храните бэкапы на отдельном сервере или в облаке (S3). - Снапшоты ФС: Используйте возможности LVM (
lvcreate --snapshot) или снапшоты на уровне облачного провайдера/СХД. - Защита от человеческого фактора: Настройка
alias rm='rm -i'или использованиеtrash-cli. Внедрение процедур для критичных операций. - Версионирование конфигурации: Весь важный конфиг (например, в
/etc) должен храниться в Git.