- Как клонировать флеш(Flash), CF(Compact Flash) карту или винчестер с помощью Linux комманды dd
- Создать образ (полную копию) флэшки
- Клонирование USB Flash с установленной системой.
- создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Re: создать копию загрузочной флешки
- Данным — жить! Восстанавливаем в Linux информацию с «убитой» флешки
- Содержание статьи
- Предыстория
- Техника безопасности: снимаем образ
- TestDisk
- О TestDisk
- PhotoRec
- О PhotoRec
- Чиним FAT32
- Ищем смещения
- Продолжение доступно только участникам
- Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Как клонировать флеш(Flash), CF(Compact Flash) карту или винчестер с помощью Linux комманды dd
(способ подходит как для любых флеш карт так и для USB стиков или винчестеров, везде где требуется 1:1 RAW копирование/клонирование)
Следущая ситуация: есть CF(Compact Flash) карта на 8Гб с неизвестной файловой системой и ее надо скопировать, а ещё лучше клонироват на другую CF карту такого же обьёма. При подключении через USB Card Reader под Windows — показывается что карта пуста и предлагается её отформатировать(чего делать конечно нельзя, мы то знаем что там есть данные).
Пробовал сначала использовать различные программы для восстановления данных под Windows, но у большинства из них проблемы с дисками подключенными через USB или тупо выдавалось — диск пуст и не отформатирован..
Правильный и более «чистый» способ сделать такую задачу — это использовать Linux и комманду «dd«.
Для этого не нужно инсталлировать сам Linux. Достаточно скачать ISO дистрибутив Ubuntu Linux(http://www.ubuntu.com/download/ubuntu/download), прожечь его на CD, стартовать компьютер с него и выбрать далее «Live System» — система стартует прямо с CD.
Подключаем через внешний USB Reader нашу CF карту. В принципе можно уже начинать работу с «dd«, но мы не знаем имя нашей подключенной через USB карты(диска). Идем в «Ubuntu Software Manager»(интернет должен быть, обычно Ubuntu сразу распознаёт все сетевые карты и соединения) и инсталлируем «Mount Manager». Запускаем его и видим все наши диски включая CF карту. Допустим ее имя — /dev/sca1
Теперь запускаем терминал.
Важная информация:
— две карты одной ёмкости не равны на самом деле. Мой опыт: только две карты одного производителя, да и то не всегда одинаковы по ёмкости. Иногда различие в несколко байт, а у разных производителей, хоть и размер например 8Гб указан, может отличаться значительно.
— клонировать можно только или на диски/карты одной ёмкости или большей
— команда «dd» не делает никакого вывода во время работы, может показаться что всё зависло, но это не так.. клонирование 8Гб у меня заняло около 50 минут. В конце «dd» выдаёт «sammary» как прошло копирование/клонирование.
— Копируется все действительно 1:1, включая все BOOT сектора, MBR и так далее.
Последовательность действий такая:
1. делаем дамп данных с карты/диска на локальную плату:
sudo dd if=/dev/sda1 of=/home/myfolder/cf_card_image.dat bs=4096 conv=notrunc,noerro
if — название, имя карты/диска
of — путь на локальной плате и имя нашего «card image».
2. вставляем чистую карту или диск в USB reader
3. копируем данные из дампа обратно на карту/диск
sudo dd if=/home/myfolder/cf_card_image.dat of=/dev/sda1 bs=4096 conv=notrunc,noerro
Ну и все на этом. После завершения работы «dd» получаем две абсолютно одинаковые карточки.
Источник
Создать образ (полную копию) флэшки
Есть флэшка с установленным дистром. Проапгрейдил систему. Теперь нужно сделать образ этой флэшки, чтоб если сломается — заново накатить эту настроенную систему с обновлениями и разметкой. Чем и как сделать? ISO или IMG?
dd самое простое.
Есть флэшка с установленным дистром.
Если речь за линь, то tar -czpvf .
Так это будет архив, под который потом разметку нужно заново делать. А нужно видимо всё таки iso, чтоб потом через dd записать.
cat /dev/sdb > мояфлешка.img
Почему без gzip? Типа надёжнее будет? Да нифига:
Нет разницы ISO это или IMG? Потом также через dd писать?
потом разметку нужно заново делать
По мне так лучше с размёткой повозиться, чем подбирать флэху нужного размера.
Зачем здесь лишний cat? И вместо gzip сейчас уже есть zstd.
Лишний. Чтобы ТС нить не потерял. Tar всё равно в приоритете.
То, что доктор прописал. Спасибо!
Чтобы не перепутать где какой диск советую использовать не старомодные /dev/sd? , а более понятные /dev/disk/by-id/usb-* (нужно выбрать тот, который без -part1 имени).
Ну и да, gzip/pigz и прочие архиваторы не повредят.
Минус способа в том, что данные на свободном месте тоже попадают в копию. Можно сначала создать на флешке огромный файл с нулями, удалить его и потом делать копию, гзип нули сожмёт.
Источник
Клонирование USB Flash с установленной системой.
Имеется сервер на Debian. Система установлена на USB флешку. Размер флешки 7,46GB (8GB). На ней разделы: /boot — 256MB, swap — 3GB, /(root) — 3GB. Оставшееся место (около 1G) не размечено.
Хочу сделать полную копию (вместе с MBR и GRUB’ом) этой флешки на случай отказа текущей. Взял вторую 8-ми гиговую флешку — а она чуть меньше по объему — 7,43GB. Clonezilla не захотела делать дубликат на флешку меньшего объема даже не смотря на то, что все разделы должны уместиться. Хотя на флешки большего объема делает без проблем.
Как лучше и проще сделать дубликат?
Думаю, что в данном случае допустим банальный dd с отбрасыванием того, что не влезло на новую флешку (это само получится, dd выплюнет ошибку, но до этого места всё скопирует). Разумеется, если неразмеченная область именно в конце диска, а не в середине.
Как банальный вариант — dd наверное прокатит, конечно. Но копировать он точно будет дольше.
Я думал над вариантом:
Я бы архивировал все разделы в отдельные архивы. Места меньше занимает. Когда нужно восстановить на другую флешку — руками создал нужные разделы, установил grub и распаковал архивы. И по поводу отдельного /boot — не уверен, что он нужен. Да и swap тоже. Тогда всё сильно упрощается.
dd, по крайней мере, должен сделать всё однозначно хорошо. С помощью dd делал себе загрузочную флешку, им же делал её дубликат для товарища. Правда, ситуация обратная, у него на 8 а у меня на 1, но в итоге две рабочие загрузочные флешки, загрузочные разделы нормальные, с грабом и флагом загрузки.
По поводу небольшой разницы в размере согласен со сказанным выше. Скорее всего, всё будет хорошо.
Источник
создать копию загрузочной флешки
Есть загрузочная USB флешка, сделанная в Linux родными утилитами — mkfs.ext2, grub и т.д., которая выполняет определённые действия при загрузке с неё. На флешке только один раздел, созданный через fdisk (/dev/sdc1).
необходимо создать её копию (тоже загрузочную, конечно).
Сделать полный образ через dd и прожечь его на другую флешку проще всего, но получается очень большой размер образа (файлы на флешке занимают
500Mb, а образ получается
1Gb), поэтому хотелось бы сделать поменьше.
Как можно создать копию этой флешки, не делая её полный образ через dd? Очевидно надо как-то скопировать загрузочные области, и файлы, но не соображу как?
Re: создать копию загрузочной флешки
>Очевидно надо как-то скопировать загрузочные области, и файлы, но не соображу как?
Не знаю, что тут соображать, делайте ещё одну флешку через fdisk, mkfs.ext2, grub, а файлы копируйте через «сp -a».
Re: создать копию загрузочной флешки
флешка была создана на другой системе, там grub-install был специфический, я не могу использовать свой grub-install для создания загрузочной области. Поэтому и вопрос — как правильно скопировать загрузочные области с флешки через dd.
Re: создать копию загрузочной флешки
Выходной поток dd сжимать в конвеере в файл.tar.gz, а на целевой флэшке декомпрессировать.
Re: создать копию загрузочной флешки
всё равно это довольно плохо сожмёт образ, до
60% от начального объёма в лучшем случае
Re: создать копию загрузочной флешки
Re: создать копию загрузочной флешки
спасибо за наводку, но установка новых программ крайне нежелательна. Эти образы мне надо будет отослать, и на той стороне никто ничего ставить не будет 100%, поэтому хотелось бы обойтись стандартным cp и dd.
Re: создать копию загрузочной флешки
при помощи dd сохраняем загрузчик (512байт), затем при помощи cp копируем содержимое флешки. Далее можно еще и сжать (лучше всего сжимает 7z, правда, медленно).
Re: создать копию загрузочной флешки
1. Монтируем флешку
2. При помощи dd создаем на ней файл, забитый нулями (пока место не кончится).
3. Удаляем его командой rm
4. Снимаем образ флешки при помощи dd + bzip2
5. .
6. PROFIT.
Re: создать копию загрузочной флешки
>лучше всего сжимает 7z, правда, медленно
Да ну?
Источник
Данным — жить! Восстанавливаем в Linux информацию с «убитой» флешки
Содержание статьи
Предыстория
Недавно ко мне пришел товарищ с фразой: «У меня флешка сломалась, можешь посмотреть? В принципе, если не получится, то и ладно, но там есть несколько файлов, копий которых нет».
Я, конечно, флешку взял и обещал посмотреть, что можно сделать. Грех не помочь другу! Входные данные были такие: «винда перестала видеть флешку». Других внятных объяснений произошедшего я не добился.
И вот, когда выдалось немного свободного времени, настала пора попробовать восстановить какие-то данные с флешки.
В этой статье рассматривается восстановление флешек в среде Linux. В Windows тоже можно восстанавливать данные: есть разные утилиты и проприетарные продукты (например, R-Studio), но это тема для отдельных статей.
Первым делом, подключив флешку к ноуту с Linux, я убедился, что аппаратная часть девайса жива, а повреждены именно данные на ней.
Второе, что я сделал, — снял образ.
Техника безопасности: снимаем образ
Самая важная часть в восстановлении данных — не угробить своими действиями еще больше данных. Все описываемые в статье действия производились исключительно с образом флешки. Снять образ можно следующими командами (тебе, конечно, надо указать путь к своему устройству):
Как вариант, можно использовать команду ddrescue:
Лично я предпочитаю второй способ, поскольку ddrescue пытается считать данные в несколько проходов, а также (если ты дал команду писать лог) прервать чтение и продолжить с места остановки. Плюс к этому утилита дает красивый отчет о том, сколько данных считалось, а сколько нет, и оценку времени до конца съема образа.
Кроме того, имеет смысл работать с копией образа. Вдруг ты его испортишь, и не факт, что получится еще раз снять образ с флешки, если она умирает из-за аппаратных проблем. Для частичных копий образа и восстановления испорченных частей к начальному состоянию рекомендую пользоваться тем же всемогущим dd.
Параметр notrunc нужен для того, чтобы dd не обрезала файл-назначение, когда закончатся данные в файле-источнике.
Сняв образ флешки, я взглянул на содержимое. Увиденное несколько меня удивило.
$ hexdump -C flash.img|less
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |. | * 00400000 01 76 0a 00 02 76 0a 00 03 76 0a 00 04 76 0a 00 |.v. v. v. v..| 00400010 05 76 0a 00 06 76 0a 00 07 76 0a 00 08 76 0a 00 |.v. v. v. v..| 00400020 09 76 0a 00 0a 76 0a 00 0b 76 0a 00 0c 76 0a 00 |.v. v. v. v..| 00400030 0d 76 0a 00 0e 76 0a 00 0f 76 0a 00 10 76 0a 00 |.v. v. v. v..| 00400040 11 76 0a 00 12 76 0a 00 13 76 0a 00 14 76 0a 00 |.v. v. v. v..| .
В образе первые 4 Мбайт данных были забиты 0xFF. Поврежден блок флеш-памяти? Чья-то попытка стереть данные? Сбой какого-то приложения? Почему затерта область — неважно. Главное, что у нас нет ни таблицы разделов, ни структуры файловой системы. Хотя если приглядеться, то видна закономерность. Перед нами последовательность увеличивающихся на единицу 32-битных чисел (в формате LittleEndian): 0x000a7601, 0x000a7602, 0x000a7603. Следовательно, у нас на флешке, скорее всего, была файловая система FAT32.
Что ж, попробуем восстановить данные. Для начала возьмем утилиту TestDisk.
TestDisk
TestDisk — не просто утилита, а мощный комбайн по восстановлению данных.
О TestDisk
TestDisk разработан Кристофом Гренье и распространяется по лицензии GPL v2. Эта утилита предназначена в первую очередь для восстановления потерянных разделов на носителях информации, а также для восстановления загрузочного сектора.
- исправлять таблицу разделов, восстанавливать удаленные разделы;
- восстанавливать загрузочный сектор FAT32 из резервной копии;
- перестраивать (реконструировать) загрузочный сектор FAT12/FAT16/FAT32;
- исправлять таблицу FAT;
- перестраивать (реконструировать) загрузочный сектор NTFS;
- восстанавливать загрузочный сектор NTFS из резервной копии;
- восстанавливать MFT;
- определять резервный SuperBlock ext2/ext3/ext4;
- восстанавливать удаленные файлы на файловых системах FAT, NTFS и ext2;
- копировать файлы с удаленных разделов FAT, NTFS и ext2/ext3/ext4.
Запускаем TestDisk такой командой:
Стартовый экран TestDisk
Выбираем пункты меню Procced → Intel → Analyse и получим следующее.
Выбор типа разметки
Выбор опций
Таблица разделов
Еще одна таблица разделов
Видим, что TestDisk не нашел таблицы разделов. Ожидаемо, ведь она затерта. Попробуем ее восстановить с использованием «быстрого поиска» разделов на диске. Выбираем пункт Quick Search.
Все еще без таблицы разделов
TestDisk ничего не нашел, но и это ожидаемо, ведь раздел FAT32 тоже поврежден. TestDisk теперь предлагает нам прописать разделы вручную, но мы не знаем, что где лежало. Поэтому пока отложим эту утилиту в сторону. Для выхода достаточно несколько раз нажать кнопку q.
Что ж, возьмем тогда на вооружение другое изобретение того же автора — PhotoRec.
PhotoRec
PhotoRec — это программа для восстановления утерянных (удаленных) файлов. Изначально она разрабатывалась для восстановления изображений из памяти цифровых камер, отсюда и название — PHOTO RECovery. Со временем она обросла функциями восстановления и других типов данных, но название осталось.
О PhotoRec
PhotoRec ищет известные заголовки файлов. Если нет фрагментации, которая часто бывает, он может восстановить весь файл. PhotoRec распознает многочисленные форматы файлов, включая ZIP, Office, PDF, HTML, JPEG и другие форматы графических файлов. Полный список форматов, поддерживаемых PhotoRec содержит более 390 расширений (около 225 семейств форматов).
Если данные не фрагментированы, восстановленный файл должен быть идентичного размера или больше, чем исходный файл. В некоторых случаях PhotoRec может узнать оригинальный размер файла из заголовка, так что восстановленный файл усекается до необходимого размера. Однако, если восстановленный файл заканчивается раньше, чем указывает его заголовок, он отбрасывается. Некоторые файлы, такие как MP3, представляют собой поток данных. В этом случае PhotoRec анализирует полученные данные, а затем останавливает восстановление, когда поток завершается.
Натравим эту утилитку на наш образ флешки и посмотрим, что получится.
Стартовый экран PhotoRec
Видим уже знакомый интерфейс, выбираем Proceed → Search → Other, указываем папку, куда сохранять (лучше ее создать заранее), жмем кнопку c. И ждем.
Выбор раздела
Выбор типа файловой структуры
Выбор папки назначения
Процесс восстановления
В итоге получаем несколько папок с тысячами файлов в них.
Куча сохраненных файлов
Беглый осмотр показал, что какие-то файлы восстановились: и документы, и картинки, и исходники. Но нет ни имен файлов, ни даты их создания, ни структуры папок. Кроме того, как оказалось, на флешке была какая-то документация в виде страничек HTML с кучей мелких картинок. В связи с чем поиск ценных файлов занял бы не один час.
Да и, как указано на врезке, фрагментированные файлы или не восстановились, или повреждены (обрезаны).
Видимо, придется напрячь все свои силы и руками восстановить структуру FAT32.
Чиним FAT32
Для восстановления структуры FAT32 надо внимательно почитать документацию, вычислить значения ключевых параметров, а затем внести их в загрузочную запись FAT32. Кратко суть структуры FAT32 изображена на рисунке.
Сюда входит загрузочный сектор, структура FSInfo, две копии таблиц FAT и область данных. Загрузочный сектор (он же BPB — Boot Parameter Block) содержит основные данные, которые описывают характеристики раздела, и код загрузчика.
В таблице FAT хранятся записи номеров следующих кластеров цепочки файла/директории, признак последнего кластера в цепочке (значение 0xFFFFFFFF) или признак свободного кластера (значение 0). Область данных начинается с корневой директории, содержимое дальнейшей области зависит от данных в записях корневой директории и соответствующих цепочках таблицы FAT. Более подробное описание файловой системы смотри по ссылкам, приведенным во врезке.
- Официальная спецификация FAT (Microsoft, DOC)
- Understanding FAT32 Filesystems (GitHub, PDF)
- Design of the FAT file system (GitHub, PDF)
- Загрузочный сектор, FSINFO, таблица FAT и записи каталогов FAT (Hetman Data Recovery)
- Системные структуры данных FAT32 («Инфопедия»)
Для удобной работы с образом нам потребуется Hex-редактор. Лично мне очень нравится редактор 010 Editor. Он позволяет задавать шаблоны структуры на C-подобном языке и подсвечивать поля структуры в редакторе.
Откроем в нем наш образ флешки.
Ищем смещения
Начнем с того, что нам надо вычислить адреса, с которых начинаются раздел FAT32 и первая копия таблицы FAT.
Сначала поймем, повреждена у нас первая копия FAT или обе. Из документации мы знаем, что таблица FAT начинается с последовательности F8 FF FF FF (число 0xFFFFFFF8 в Little Endian). Поищем ее.
Поиск сигнатуры
Нам повезло — такая сигнатура нашлась. Значит, повреждена только первая копия таблицы FAT и мы можем скопировать данные второй таблицы в первую. Конечно, стоит помнить, что если флешка была отключена внезапно, то вторая копия может не полностью совпадать с первой (в нее просто не успели сохраниться изменения). Но все же мы сможем восстановить больше данных, чем при помощи только PhotoRec. Как минимум получим дополнительно имена файлов, даты их создания, корректные цепочки для фрагментированных файлов и даже структуру директорий.
Смотрим адрес — 0x8AE400. Это адрес начала второй копии таблицы. Теперь надо вычислить длину самой таблицы. Можно, конечно, руками полистать дамп, пока не заметим данные корневой директории. Но есть вариант попроще. Поскольку это две копии, то и запись, с которой начинается кусок первой копии таблицы, должна быть и во второй копии. А разница между ними и будет размером!
Поищем последовательность 01 76 0A 00, которую мы видели вначале, когда воспользовались hexdump. Быстро начинают находиться варианты. Остановим поиск нажатием ESC — нас интересуют первые два вхождения.
Первое вхождение последовательности
Первое вхождение (адрес 0x400000) — первая уцелевшая запись в первой копии FAT. Перед ней затертое пространство.
Второе вхождение последовательности
Второе вхождение (по адресу 0xB4BC00) — эта же запись во второй копии FAT. Перед ней мы видим сохранившиеся данные цепочек.
Вычислим размер таблицы FAT: 0xB4BC00 – 0x400000 = 0x74BC00 байт. Следовательно, если вычтем этот размер из адреса начала второй копии таблицы, то получим адрес начала первой копии: 0x8AE400 – 0x74BC00 = 0x162800.
Итак, у нас есть смещение начала таблиц FAT. Теперь надо найти адрес начала раздела. Согласно данным в спецификациях и статьях, приведенных во врезке, обычно первая копия таблицы начинается с 32-го сектора. Сектора, напомню, по 512 байт, значит, начало раздела должно находиться по адресу 0x162800 – 32×512 = 0x15E800.
Кстати, зная размеры таблиц и смещения их начала, можем найти адрес начала корневой директории.
Смещение корневой директории равно 0x15E800 + 32×512 + 2×0x74BC00 = 0xFFA000. И начинается она записью Transcend, что, очевидно, является меткой раздела.
Отлично. Смещения таблиц, корневой директории и адрес начала раздела знаем, осталось придумать, что записать в загрузочную запись. Можно сидеть и читать спецификации, высчитывая каждое значение. А я предлагаю сделать ход конем! Создаем пустой файл размером с раздел. Далее мы его форматируем в FAT32. Затем копируем первые 32 сектора в наш образ — и готово! 🙂
Попробуем воплотить этот план в жизнь.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Источник