Пум-пурум, сегодня ещё один неочевидный способ восстановить удалённые файлы в Linux. Я знаю, ты такое любишь. Первый способ описывал тут, второй — тут.

Валяется у меня скриптик ~/fs.sh, приходит жопарукий Петя и удаляет его через rm -rf ~/fs.sh. Козлина! Ни о какой корзине речь и идти не может.

Но я примерно помню, что было внутри. А было там нечто подобное:

#!/bin/bash
echo "Fucking"
exit 1

Что делать? Ну, во-первых, прописываем прицельную двоечку в безмозглую кабину Пете. Ну а если ты на удалёнке, то просто пишем в корпоративную аську — Пётр, вы 3.14дарасина.

Во-вторых, запускаем команду:

grep -a -C 200 -F 'Fucking' /dev/sda1

Оно там подумает какое-то время и начнёт вываливать на экран всякий мусор. Ну а среди этого мусора будет удалённый исходник скрипта. Копипастим/вставляем и снова радуемся своим скиллам.

Теперь по ключам:

  • -a — осуществляем поиск в бинарных файлах;
  • -C — сколько строк выводить ДО и ПОСЛЕ каждого совпадения строки.

То есть у меня совпала строка Fucking. Если я не укажу -C 200, то увижу в выводе только echo "Fucking". А нам-то нужно восстановить весь скрипт полностью. Поэтому и нужно сказать грепу: давай ещё выведи 200 строк до и 200 после.

-F — строка, по которой будем искать.

Естественно, указываем свой раздел диска: у меня это /dev/sda1, у тебя может быть что-то совсем другое. Учти этот момент.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Почему это работает? Если коротко — мы воспользовались философией Unix, которая гласит: «Всё есть файл!»

Такие дела. Чётко и полезно, забирай в копилку знаний. Вечерком ещё что-нибудь интересное напишу, пока, правда, не знаю про что. На связи!