🔍 В этом посте покажу вам увлекательный трюк – как узнать физическое расположение файла на жестком диске, не просто его путь, а именно область, в которой файл находится. Вперед, начинаем! 🏃♂️
Для начала, создаем подопытный файл. Можно сделать это двумя способами:
printf '%s\n' {a..d} > /tmp/test.txtили так:
echo {a..d} > /tmp/test.txtПосле создания файла, запускаем команду
sync. Хотя она не обязательна, так как Linux автоматически выполнит необходимые действия спустя несколько секунд. Но ради чистоты эксперимента я всегда запускаю
sync.
Команда
sync – это утилита Unix, которая обновляет файловые системы и синхронизирует данные на диске с данными в памяти. Это предотвращает потерю данных, хранящихся в кеше, при аварийном завершении работы.
Теперь, когда файл успешно создан, давайте посмотрим, что он содержит:
cat /tmp/test.txt
Ожидаемый вывод:
abcdИтак, следующим шагом – узнать физическое расположение файла на диске. Для этого выполняем команду:
filefrag -b512 -v /tmp/test.txt
Эта программа покажет насколько сильно фрагментирован файл.
После выполнения команды, обращаем внимание на столбец
physical_offset. В моем случае, полученные значения:
4612136..4612143
Теперь, давайте прочитаем содержимое файла прямо с диска:
sudo dd if=/dev/sda1 skip=4612136 status=none count=8
Важно указать правильное значение
/dev/sdX для вашего диска и заменить
skip на первое значение из колонки
physical_offset.
После выполнения команды, ожидаемый вывод:
abcd.
Таким образом, даже если мы удалим файл
rm /tmp/test.txt, мы сможем восстановить его, зная
physical_offset.
Этот трюк может быть полезен, например, для восстановления случайно удаленных данных, если мы знаем его физическое расположение на диске.
Надеюсь, этот пост был полезным! Если вам понравился, ставьте лайк. 😻