🔍 В этом посте покажу вам увлекательный трюк – как узнать физическое расположение файла на жестком диске, не просто его путь, а именно область, в которой файл находится. Вперед, начинаем! 🏃‍♂️



Для начала, создаем подопытный файл. Можно сделать это двумя способами:



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.



Этот трюк может быть полезен, например, для восстановления случайно удаленных данных, если мы знаем его физическое расположение на диске.



Надеюсь, этот пост был полезным! Если вам понравился, ставьте лайк. 😻