Linux восстановление удаленных файлов на файловой системе FAT / NTFS: различия между версиями
imported>Vix (Новая страница: «'''Восстановление данных из Linux с носителей FAT / NTFS:''' <hr> Для оживления умерших файлов на '''N…») |
imported>Vix Нет описания правки |
||
Строка 2: | Строка 2: | ||
<hr> | <hr> | ||
Для оживления умерших файлов на '''NTFS''' предназначена уже упоминавшаяся | * Для оживления умерших файлов на '''NTFS''' предназначена уже упоминавшаяся | ||
'''ntfsundelete''' из пакета '''ntfsprogs'''. Она очень проста в использовании и чрезвычайно | '''ntfsundelete''' из пакета '''ntfsprogs'''. Она очень проста в использовании и чрезвычайно | ||
аккуратна. Если ты случайно потер файл и сразу же отмонтировал раздел, будь | аккуратна. Если ты случайно потер файл и сразу же отмонтировал раздел, будь | ||
уверен — ntfsundelete сможет вернуть его на место в целости и сохранности. | уверен — ntfsundelete сможет вернуть его на место в целости и сохранности. | ||
Для начала необходимо просмотреть список всех удаленных файлов: | * Для начала необходимо просмотреть список всех удаленных файлов: | ||
# ntfsundelete /dev/sda1 | # ntfsundelete /dev/sda1 | ||
Строка 31: | Строка 31: | ||
# ntfsundelete /dev/sda1 -u -i 11172 -d /undeleted | # ntfsundelete /dev/sda1 -u -i 11172 -d /undeleted | ||
Файлы можно восстанавливать по маске: | * Файлы можно восстанавливать по маске: | ||
# ntfsundelete /dev/sda1 -u -m "*.doc" | # ntfsundelete /dev/sda1 -u -m "*.doc" | ||
Фильтровать по длине: | * Фильтровать по длине: | ||
# ntfsundelete /dev/hda1 -S 5k-6m | # ntfsundelete /dev/hda1 -S 5k-6m | ||
Или же ты можешь восстановить все удаленные файлы, а уже потом разобраться, | * Или же ты можешь восстановить все удаленные файлы, а уже потом разобраться, | ||
что к чему: | что к чему: | ||
Строка 51: | Строка 51: | ||
программу: | программу: | ||
# photorec | # photorec | ||
В главном меню выбираем подопытное устройство (например, '''/dev/sda'''). Нажимаем | В главном меню выбираем подопытное устройство (например, '''/dev/sda'''). Нажимаем | ||
Строка 74: | Строка 74: | ||
поэтому их следует проверять на "небитость" в обязательном порядке. | поэтому их следует проверять на "небитость" в обязательном порядке. | ||
Программа ищет файлы по шаблонам. Если ты удалил файл, формат которого | Программа ищет файлы по шаблонам. Если ты удалил файл, формат которого | ||
не поддерживается PhotoRec — пиши пропало. | не поддерживается '''PhotoRec''' — пиши пропало. | ||
Поэтому в довесок к photorec необходимо иметь под рукой другие средства | Поэтому в довесок к '''photorec''' необходимо иметь под рукой другие средства | ||
анализа и восстановления утраченных данных. Лучшим на этом поприще считается | анализа и восстановления утраченных данных. Лучшим на этом поприще считается | ||
комплект утилит '''Sleuth Kit''', | комплект утилит '''Sleuth Kit''', | ||
Строка 82: | Строка 82: | ||
применять в своей работе различные службы по расследованию инцидентов взлома и | применять в своей работе различные службы по расследованию инцидентов взлома и | ||
продвинутые системные администраторы. Мы далеки от этого, и нас интересуют | продвинутые системные администраторы. Мы далеки от этого, и нас интересуют | ||
только две утилиты из всего комплекта: fls и icat, предназначенные для поиска и | только две утилиты из всего комплекта: '''fls''' и '''icat''', предназначенные для поиска и | ||
извлечения файлов (как существующих, так и удаленных). | извлечения файлов (как существующих, так и удаленных). | ||
Просмотрим список удаленных файлов с помощью утилиты '''fls''': | * Просмотрим список удаленных файлов с помощью утилиты '''fls''': | ||
# fls -rd /dev/sdb1 | # fls -rd /dev/sdb1 | ||
Строка 94: | Строка 94: | ||
r/r * 128: dsc0009.jpg | r/r * 128: dsc0009.jpg | ||
Флаг ‘-r’ заставляет программу рекурсивно проходить по всем каталогам, а ‘-d’ | * Флаг ‘-r’ заставляет программу рекурсивно проходить по всем каталогам, а ‘-d’ | ||
— показывать только удаленные файлы. | — показывать только удаленные файлы. | ||
Строка 109: | Строка 109: | ||
# icat -r /dev/sda1 1023 > /home/vasya/tmp/my_file | # icat -r /dev/sda1 1023 > /home/vasya/tmp/my_file | ||
Для восстановления всех файлов можно воспользоваться следующей командой: | * Для восстановления всех файлов можно воспользоваться следующей командой: | ||
# for i in `fls -rd /dev/sda1 | grep -v '(realloc)' |\ | # for i in `fls -rd /dev/sda1 | grep -v '(realloc)' |\ | ||
Строка 115: | Строка 115: | ||
/home/vasya/tmp/inode-$i ;done | /home/vasya/tmp/inode-$i ;done | ||
Если ты желаешь найти какой-то конкретный файл, то вывод fls можно просто "погрепать": | * Если ты желаешь найти какой-то конкретный файл, то вывод fls можно просто "погрепать": | ||
# fls -rd /dev/sda1 | grep -v '(realloc)' | grep my_file.jpg | # fls -rd /dev/sda1 | grep -v '(realloc)' | grep my_file.jpg | ||
Замечательная особенность утилит Sleuth Kit состоит в том, что они используют | Замечательная особенность утилит '''Sleuth Kit''' состоит в том, что они используют | ||
множество самых разнообразных методик поиска удаленных файлов и их частей. Это и | множество самых разнообразных методик поиска удаленных файлов и их частей. Это и | ||
анализ управляющих структур файловой системы, и различные эвристические методы, | анализ управляющих структур файловой системы, и различные эвристические методы, | ||
и сопоставление с шаблоном. Фактически, с помощью Sleuth Kit возможно вернуть к | и сопоставление с шаблоном. Фактически, с помощью '''Sleuth Kit''' возможно вернуть к | ||
жизни даже файлы, затертые на ext3 (притом, что сами разработчики ext3 говорят о | жизни даже файлы, затертые на '''ext3''' (притом, что сами разработчики '''ext3''' говорят о | ||
невозможности проведения такой операции). | невозможности проведения такой операции). | ||
Строка 138: | Строка 138: | ||
Используя виртуальную машину, мы можем избежать необходимости перезагрузки в | Используя виртуальную машину, мы можем избежать необходимости перезагрузки в | ||
Windows. Для этого: | '''Windows'''. Для этого: | ||
Запускаем виртуальную машину и устанавливаем винду на виртуальный | Запускаем виртуальную машину и устанавливаем винду на виртуальный | ||
жесткий диск. | жесткий диск. | ||
Отмонтируем раздел, содержащий файловую систему NTFS. | Отмонтируем раздел, содержащий файловую систему '''NTFS'''. | ||
Запускаем виртуальную машину, в качестве первого жесткого диска которой | Запускаем виртуальную машину, в качестве первого жесткого диска которой | ||
указываем виртуальный диск с Windows, а второго — наш настоящий жесткий | указываем виртуальный диск с Windows, а второго — наш настоящий жесткий | ||
диск. | диск. | ||
С помощью стандартных средств Windows запускаем проверку NTFS-раздела. | С помощью стандартных средств Windows запускаем проверку '''NTFS'''-раздела. | ||
* Копирование разделов | |||
Допустим, ты купил новый жесткий диск и хочешь перенести несколько разделов | Допустим, ты купил новый жесткий диск и хочешь перенести несколько разделов | ||
Строка 158: | Строка 158: | ||
клонирования раздела. | клонирования раздела. | ||
Пользователи UNIX клонируют разделы с помощью стандартной утилиты dd, которую | Пользователи '''UNIX''' клонируют разделы с помощью стандартной утилиты '''dd''', которую | ||
можно применять в связке с любой файловой системой. Для этого на новом диске | можно применять в связке с любой файловой системой. Для этого на новом диске | ||
создается раздел, идентичный по размерам источнику, и выполняется команда "dd if=раздел1 | создается раздел, идентичный по размерам источнику, и выполняется команда "'''dd if=раздел1 | ||
of=раздел2 bs=1m". Таким же образом можно скопировать и NTFS-раздел, но в пакете | of=раздел2 bs=1m'''". Таким же образом можно скопировать и '''NTFS'''-раздел, но в пакете | ||
ntfsprogs для этой цели есть более подходящая утилита. | '''ntfsprogs''' для этой цели есть более подходящая утилита. | ||
Программа ntfsclone идентична по функциональности команде dd за исключением | Программа '''ntfsclone''' идентична по функциональности команде '''dd''' за исключением | ||
двух особенностей. Во-первых, она не копирует незанятые участки файловой | двух особенностей. Во-первых, она не копирует незанятые участки файловой | ||
системы, и перемещение происходит быстрее, а образ раздела (если ты создаешь | системы, и перемещение происходит быстрее, а образ раздела (если ты создаешь | ||
образ) занимает меньше места. Во-вторых, ntfsclone способна хранить образ в | образ) занимает меньше места. Во-вторых, '''ntfsclone''' способна хранить образ в | ||
специальном сжатом файле, который удобно передавать на другие машины. | специальном сжатом файле, который удобно передавать на другие машины. | ||
Для клонирования раздела достаточно выполнить следующую команду: | * Для клонирования раздела достаточно выполнить следующую команду: | ||
# ntfsclone --overwrite /dev/hda1 /dev/hdb1 | # ntfsclone --overwrite /dev/hda1 /dev/hdb1 | ||
А для создания образа: | * А для создания образа: | ||
# ntfsclone --save-image --output backup.img /dev/hda1 | # ntfsclone --save-image --output backup.img /dev/hda1 | ||
Утилита ntfsclone особенно удобна, если ты решил скопировать установленный | Утилита '''ntfsclone''' особенно удобна, если ты решил скопировать установленный | ||
Windows на целый парк других машин (учебный класс или офис). Для этого | Windows на целый парк других машин (учебный класс или офис). Для этого | ||
достаточно установить Windows на одну машину и создать образ, который затем | достаточно установить '''Windows''' на одну машину и создать образ, который затем | ||
можно выложить в шару и с помощью Linux LiveCD залить на другие машины. Чтобы | можно выложить в шару и с помощью '''Linux LiveCD''' залить на другие машины. Чтобы | ||
они смогли загружаться, придется также скопировать MBR-запись диска: | они смогли загружаться, придется также скопировать '''MBR'''-запись диска: | ||
# sfdisk -d /dev/sda > /share/sda-sfdisk.dump | # sfdisk -d /dev/sda > /share/sda-sfdisk.dump | ||
# dd if=/dev/sda bs=512 count=1 of=/share/sda-mbr.dump | # dd if=/dev/sda bs=512 count=1 of=/share/sda-mbr.dump | ||
А затем записать ее на диск всех машин: | * А затем записать ее на диск всех машин: | ||
# sfdisk /dev/sda < /share/sda-sfdisk.dump | # sfdisk /dev/sda < /share/sda-sfdisk.dump | ||
# dd if=/share/sda-mbr.dump of=/dev/sda | # dd if=/share/sda-mbr.dump of=/dev/sda | ||
Перенос данных | * Перенос данных | ||
Что делать, если ты решил полностью перейти на Linux, но не хочешь | Что делать, если ты решил полностью перейти на Linux, но не хочешь | ||
Строка 223: | Строка 223: | ||
освободившегося места, что позволит нам скопировать часть файлов, а затем вновь | освободившегося места, что позволит нам скопировать часть файлов, а затем вновь | ||
изменить размер. Четыре таких прохода, и мы полностью удаляем NTFS-раздел, а | изменить размер. Четыре таких прохода, и мы полностью удаляем NTFS-раздел, а | ||
раздел ext3/ext4 расширяем на весь диск. | раздел '''ext3/ext4''' расширяем на весь диск. | ||
'''ИСТОЧНИК:''' | '''ИСТОЧНИК:''' |
Текущая версия от 12:26, 17 апреля 2018
Восстановление данных из Linux с носителей FAT / NTFS:
- Для оживления умерших файлов на NTFS предназначена уже упоминавшаяся
ntfsundelete из пакета ntfsprogs. Она очень проста в использовании и чрезвычайно аккуратна. Если ты случайно потер файл и сразу же отмонтировал раздел, будь уверен — ntfsundelete сможет вернуть его на место в целости и сохранности.
- Для начала необходимо просмотреть список всех удаленных файлов:
# ntfsundelete /dev/sda1
В третьей колонке вывода будет указан процент сохранности файла. Если он равен 100% — все ок, файл может быть возвращен к жизни целым и невредимым; меньшее значение указывает на то, что какие-то его участки уже были затерты новыми данными, поэтому после восстановления файл окажется, что называется, битым. В некоторых случаях возможность восстановления даже наполовину убитого файла может сделать погоду, пока же остановимся на полностью целых экземплярах. Для этого выполним следующую команду:
# ntfsundelete -p 100 /dev/sda1
Ух, как же их много! Заставим программу вывести на экран только файлы, удаленные за последние 2 дня:
# ntfsundelete /dev/sda1 -p 100 -t 2d
Так-то лучше. Восстановим файл, номер inode (первая колонка вывода) которого равен 11172, в каталог /undeleted:
# ntfsundelete /dev/sda1 -u -i 11172 -d /undeleted
- Файлы можно восстанавливать по маске:
- ntfsundelete /dev/sda1 -u -m "*.doc"
- Фильтровать по длине:
# ntfsundelete /dev/hda1 -S 5k-6m
- Или же ты можешь восстановить все удаленные файлы, а уже потом разобраться,
что к чему:
# ntfsundelete /dev/sda1 -u -m "*" -d /undeleted
Программа извлекает файлы со всеми атрибутами, включая имя и время создания. Пользоваться ей одно удовольствие.
Для восстановления данных со всех остальных файловых систем, включая FAT, UFS, EXT3, да и любых других, удобнее всего использовать PhotoRec. Запускаем программу:
# photorec
В главном меню выбираем подопытное устройство (например, /dev/sda). Нажимаем <Enter> и выбираем тип таблицы разделов (для писюков это Intel). Далее выбираем раздел, а на следующем экране — тип файловой системы (ext2/ext3 или другая). Задаем каталог, куда мы хотим поместить восстановленные файлы, и нажимаем "Y". Каталог должен находиться на другом разделе/диске, иначе ты рискуешь усугубить ситуацию, затерев удаленные файлы новыми данными.
Все, начался процесс восстановления, он может продлиться от 10 минут до нескольких часов, в зависимости от "старости" файловой системы и количества удаленных файлов. Ты можешь остановить процесс в любой момент, нажав <Ctrl-C>, и возобновить его с места прерывания, вновь запустив PhotoRec.
В выбранном тобой каталоге ты найдешь массу подкаталогов с именами вроде recup_dir.1, recup_dir.2, каждый из которых содержит большое количество файлов разного типа. Имена PhotoRec не восстанавливает, поэтому придется повозиться с разгребанием всей этой кучи. У PhotoRec есть и другие недостатки:
Достаточно часто он дает сбои, и файлы могут оказаться поврежденными, поэтому их следует проверять на "небитость" в обязательном порядке. Программа ищет файлы по шаблонам. Если ты удалил файл, формат которого не поддерживается PhotoRec — пиши пропало.
Поэтому в довесок к photorec необходимо иметь под рукой другие средства анализа и восстановления утраченных данных. Лучшим на этом поприще считается комплект утилит Sleuth Kit, содержащий огромное количество самых разнообразных инструментов, которые любят применять в своей работе различные службы по расследованию инцидентов взлома и продвинутые системные администраторы. Мы далеки от этого, и нас интересуют только две утилиты из всего комплекта: fls и icat, предназначенные для поиска и извлечения файлов (как существующих, так и удаленных).
- Просмотрим список удаленных файлов с помощью утилиты fls:
# fls -rd /dev/sdb1 r/r * 117: dsc0005.jpg r/r * 119: dsc0006.jpg r/r * 122: dsc0007.jpg r/r * 125: dsc0008.jpg r/r * 128: dsc0009.jpg
- Флаг ‘-r’ заставляет программу рекурсивно проходить по всем каталогам, а ‘-d’
— показывать только удаленные файлы.
Скорее всего, листинг будет очень длинным, и к тому же будет содержать список inode, которые уже были отданы другим файлам (строчка realloc в третьей колонке), поэтому мы его отфильтруем и направим в less:
# fls -rd /dev/sda1 | grep -v '(realloc)' | less
В третьей колонке ты увидишь номера inode-файлов, а в четвертой — их имена. Чтобы выдернуть файл из ФС, воспользуйся командой icat (флаг ‘-r’ предназначен для восстановления удаленного файла):
# icat -r /dev/sda1 1023 > /home/vasya/tmp/my_file
- Для восстановления всех файлов можно воспользоваться следующей командой:
# for i in `fls -rd /dev/sda1 | grep -v '(realloc)' |\ awk {'print $3'}|tr -d [:]`; do icat -r -f fat /dev/sdb1 $i >\ /home/vasya/tmp/inode-$i ;done
- Если ты желаешь найти какой-то конкретный файл, то вывод fls можно просто "погрепать":
# fls -rd /dev/sda1 | grep -v '(realloc)' | grep my_file.jpg
Замечательная особенность утилит Sleuth Kit состоит в том, что они используют множество самых разнообразных методик поиска удаленных файлов и их частей. Это и анализ управляющих структур файловой системы, и различные эвристические методы, и сопоставление с шаблоном. Фактически, с помощью Sleuth Kit возможно вернуть к жизни даже файлы, затертые на ext3 (притом, что сами разработчики ext3 говорят о невозможности проведения такой операции).
Починка файловых систем
Починить поломавшуюся файловую систему очень просто. Достаточно воспользоваться стандартными утилитами fsck.vfat (для файловых систем FAT12, FAT16 и FAT32), fsck.ufs (для UFS, UFS2, FFS) и ntfsfix (для NTFS).
К сожалению, ntfsfix не способна полностью вылечить NTFS. Она лишь исправляет некоторые из ее проблем и устанавливает флаг принудительной проверки файловой системы, так что следующая перезагрузка в Windows повлечет за собой запуск chkdsk для полной проверки ФС.
Используя виртуальную машину, мы можем избежать необходимости перезагрузки в Windows. Для этого:
Запускаем виртуальную машину и устанавливаем винду на виртуальный жесткий диск. Отмонтируем раздел, содержащий файловую систему NTFS. Запускаем виртуальную машину, в качестве первого жесткого диска которой указываем виртуальный диск с Windows, а второго — наш настоящий жесткий диск. С помощью стандартных средств Windows запускаем проверку NTFS-раздела.
- Копирование разделов
Допустим, ты купил новый жесткий диск и хочешь перенести несколько разделов со старого диска на новый. Если ты начнешь делать это стандартными методами, через создание нового раздела и ручное копирование файлов, то рискнешь поиметь массу проблем, связанных с кодировками имен файлов, специальными файлами, защищенными файлами, да и потеряешь массу времени. Лучше воспользоваться методом клонирования раздела.
Пользователи UNIX клонируют разделы с помощью стандартной утилиты dd, которую можно применять в связке с любой файловой системой. Для этого на новом диске создается раздел, идентичный по размерам источнику, и выполняется команда "dd if=раздел1 of=раздел2 bs=1m". Таким же образом можно скопировать и NTFS-раздел, но в пакете ntfsprogs для этой цели есть более подходящая утилита.
Программа ntfsclone идентична по функциональности команде dd за исключением двух особенностей. Во-первых, она не копирует незанятые участки файловой системы, и перемещение происходит быстрее, а образ раздела (если ты создаешь образ) занимает меньше места. Во-вторых, ntfsclone способна хранить образ в специальном сжатом файле, который удобно передавать на другие машины.
- Для клонирования раздела достаточно выполнить следующую команду:
# ntfsclone --overwrite /dev/hda1 /dev/hdb1
- А для создания образа:
# ntfsclone --save-image --output backup.img /dev/hda1
Утилита ntfsclone особенно удобна, если ты решил скопировать установленный Windows на целый парк других машин (учебный класс или офис). Для этого достаточно установить Windows на одну машину и создать образ, который затем можно выложить в шару и с помощью Linux LiveCD залить на другие машины. Чтобы они смогли загружаться, придется также скопировать MBR-запись диска:
# sfdisk -d /dev/sda > /share/sda-sfdisk.dump # dd if=/dev/sda bs=512 count=1 of=/share/sda-mbr.dump
- А затем записать ее на диск всех машин:
# sfdisk /dev/sda < /share/sda-sfdisk.dump # dd if=/share/sda-mbr.dump of=/dev/sda
- Перенос данных
Что делать, если ты решил полностью перейти на Linux, но не хочешь использовать различные ухищрения и ntfs-3g для доступа к своим старым данным, расположенным на NTFS-разделе? Ведь этот раздел может занимать большую часть диска, и нет никакой возможности просто скопировать его содержимое на новый раздел, отформатированный в ext3/ext4. В этом случае тебе на помощь опять придут утилиты из пакета ntfsprogs, а точнее одна из них — ntfsresize, которая позволит копировать данные небольшими порциями в новую файловую систему с последующим уменьшением размера NTFS-раздела и увеличением ext3/ext4-раздела. Для этого тебе понадобится какой-нибудь LiveCD, содержащий ntfsprogs и e2fsprogs версии не ниже 1.41 (для поддержки ext4, если ты, конечно, собираешься переносить данные на нее). Также очень желательно, чтобы LiveCD содержал свеженький gparted, потому что изменять размер вручную трудно и опасно (кроме изменения размера самой ФС, предстоит менять размер раздела с помощью fdisk, одна ошибка и всю операцию придется начинать сначала).
Итак, загружаемся с LiveCD и монтируем разделы жесткого диска. Допустим, его размер составляет 120 Гб. Из них 80 Гб — под завязку набитый NTFS-раздел, а остальные 30 Гб (да, именно 30, после перевода маркетинговых гигабайт в настоящие объем диска оказывается равным примерно 111 Гб) — это раздел с установленным Linux, занятость которого составляет 5 Гб. Значит, наше "окно" равно примерно 25 Гб. Перемещаем файлы с NTFS-раздела на ext3/ext4-раздел до тех пор, пока их совокупный размер не станет равен размеру окна. В результате последний оказывается полностью заполненным, а первый "худеет" на 25 Гб. Отмонтируем оба раздела и запускаем gparted. Выбираем NTFS-раздел, жмем вторую кнопку мыши, выбираем Resize/Move и уменьшаем раздел на размер окна, выбираем ext3/ext4-раздел и увеличиваем его на тот же размер окна (раздел придется сдвинуть к началу диска, а затем увеличить). Так мы получаем еще 25 Гб освободившегося места, что позволит нам скопировать часть файлов, а затем вновь изменить размер. Четыре таких прохода, и мы полностью удаляем NTFS-раздел, а раздел ext3/ext4 расширяем на весь диск.
ИСТОЧНИК:
ДОПОЛНИТЕЛЬНО: