Linux восстановление удаленных файлов на файловой системе FAT / NTFS: различия между версиями

Материал из support.qbpro.ru
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
  • Файлы можно восстанавливать по маске:
  1. 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 расширяем на весь диск.

ИСТОЧНИК:


ДОПОЛНИТЕЛЬНО: