Как быстро восстановить удаленные файлы с помощью lsof.

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

lsofудаленные файлы/proc

ℹ️ Иногда происходит неприятность — вы случайно удалили файл, который был нужен, но к счастью, это ещё не конец. Если файл всё ещё открыт каким-то процессом, его можно восстановить без использования сложных инструментов вроде файловых систем extundelete или восстановления из бэкапов. Всё, что вам нужно — это команда lsof.

🖥 1. Сначала найдите процесс, который использует удаленный файл:

lsof | grep deleted

ℹ️ Это покажет список файлов, которые были удалены, но по-прежнему открыты процессами. Например, в выводе вы увидите что-то вроде:

myapp    1234    user   4r   REG  8,1  1048576   1234567 /var/log/myapp.log (deleted)

📂 2. Теперь вы можете восстановить файл, скопировав его содержимое обратно на диск.

Для этого используйте cp с /proc:

cp /proc/1234/fd/4 /var/log/myapp.log

❔ Здесь 1234 — это PID процесса, а 4 — это дескриптор файла (он находится в четвертой колонке вывода lsof).

✔️ 3. Готово! Теперь ваш файл снова на месте.

✳️ Этот трюк работает только до тех пор, пока процесс, который использует файл, не завершён. Как только процесс закроет файл, восстановить его через /proc уже не получится.

tags: #полезно #linux

🧭 @recura_tech

Стилизованное изображение терминала с выводом команды lsof и пометками «(deleted)», рядом пиктограмма корзины — концепт восстановления удалённых файлов.
Иллюстрация: терминал с выводом lsof и символика корзины — концепт восстановления удалённых файлов.

Читайте так же