В этой статье описываются основные принципы в работе с образами жестких дисков и CD/DVD. Первоначально статья была написана очень давно для Wiki Калиниградской группы пользователей Linux, но так часто выручала меня, что решил перенести и сюда. Со временем, вероятно, будет дополнена материалом по работе с образами в контексте одноплатных компьютеров типа Raspberry PI.
Создать образ CD/DVD очень просто:
/path/to/image.iso - путь, куда сохранить образ диска с именем image.iso;
Таким образом всё содержимое диска скопируется один-в-один со всеми данными и файловой системой. Теперь вероятно вам понадобится смонтировать этот образ локально и работать с ним как со смонтированным диском:
В случае с образами жестких дисков всё несколько сложнее.
Сохранить в образ один раздел жесткого диска можно так же просто как и в случае с CD/DVD, только указав номер раздела вместо всего устройства:
А если, вы хотите создать образ всего жесткого диска со всеми разделами и со всей информацией на них? Опять обращаемся к dd:
Теперь если вам понадобится получить доступ к файлам на этом образе диска, то делается это так:
С помощью fdisk узнаем начальный сектор нужного раздела на образе (у нас ведь весь диск с разделами)
20499003*512 = 10495489536
Это значит, что раздел #5 начинается с 10495489536-го байта в файле.
Монтируем его:
Опция offset означает, что монтировать образ нужно не с начала, а со смещением равным (20499003*512). Тип файловой системы и конец раздела mount узнает из загрузочного сектора раздела, поэтому больше опций как правило не требуется.
А что если нужно изменить размеры разделов или отформатировать раздел на образе диска?
Просто так натравить программу по разметке дисков на файл нельзя. В этом поможет losetup:
Применительно к резервным копиям с помощью dd полезная статья http://mydebianblog.blogspot.ru/2008/03/dd.html
Создать образ CD/DVD очень просто:
dd if=/dev/sr0 of=/path/to/image.iso/dev/sr0 - имя привода;
/path/to/image.iso - путь, куда сохранить образ диска с именем image.iso;
Таким образом всё содержимое диска скопируется один-в-один со всеми данными и файловой системой. Теперь вероятно вам понадобится смонтировать этот образ локально и работать с ним как со смонтированным диском:
mount -o loop /path/to/image.iso /path/to/mount/path/to/mount - каталог, куда нужно смонтировать образ;
В случае с образами жестких дисков всё несколько сложнее.
Сохранить в образ один раздел жесткого диска можно так же просто как и в случае с CD/DVD, только указав номер раздела вместо всего устройства:
dd if=/dev/sda1 of=/path/to/imageТеперь этот файл-образ раздела sda1 можно смонтировать так же как и образ CD/DVD.
А если, вы хотите создать образ всего жесткого диска со всеми разделами и со всей информацией на них? Опять обращаемся к dd:
dd if=/dev/sda of=/path/to/imageЭта команда сохранит всё содержимое диска sda в файл image. Удобно для переноса системы на другой диск, или для резервной копии системы.
Теперь если вам понадобится получить доступ к файлам на этом образе диска, то делается это так:
С помощью fdisk узнаем начальный сектор нужного раздела на образе (у нас ведь весь диск с разделами)
fdisk -lu /path/to/imageВывод будет выглядеть примерно так:
Вы должны установить цилиндры.Вот видно какие разделы существуют в этом образе диска. Почему есть 1, 2, 3 и 5, но нет 4 раздела? Потому что используется MBR и 5 - логический диск на расширенном разделе 2. Подробнее об этом можете узнать из других источников. Давайте смонтируем 5-й раздел. fdisk говорит нам, что в каждом секторе 512 байт и даны начальные сектора каждого раздела. В отличии от реального диска с реальной геометрией к файлу нельзя обратится по номеру сектора, поэтому нужно узнать начало нужного раздела в байтах:
Вы можете сделать это из меню дополнительных функций.
Диск /mnt/disk2/backup/system_root/image: 0 МБ, 0 байт 255 heads, 63 sectors/track, 0 cylinders, всего 0 секторов Units = секторы of 1 * 512 = 512 bytes Disk identifier: 0x00013488 Устр-во Загр Начало Конец Блоки Id Система /mnt/disk2/backup/system_root/image1 * 63 20498939 10249438+ 83 Linux /mnt/disk2/backup/system_root/image2 20498940 76967414 28234237+ f W95 расшир. (LBA) /mnt/disk2/backup/system_root/image3 76967415 78236549 634567+ 82 Linux своп / Solaris /mnt/disk2/backup/system_root/image5 20499003 76967414 28234206 83 Linux
20499003*512 = 10495489536
Это значит, что раздел #5 начинается с 10495489536-го байта в файле.
Монтируем его:
mount -o loop,offset=$((20499003*512)) /path/to/image /path/to/mount
Опция offset означает, что монтировать образ нужно не с начала, а со смещением равным (20499003*512). Тип файловой системы и конец раздела mount узнает из загрузочного сектора раздела, поэтому больше опций как правило не требуется.
А что если нужно изменить размеры разделов или отформатировать раздел на образе диска?
Просто так натравить программу по разметке дисков на файл нельзя. В этом поможет losetup:
losetup /dev/loop /path/to/imageТеперь файл-образ диска как-бы примонтирован к устройству /dev/loop0 и с ним можно работать как с обычным диском (двигать разделы, форматировать и т.д.).
fdisk -l /dev/loop0
Диск /dev/loop0: 40.0 ГБ, 40060403712 байт
255 heads, 63 sectors/track, 4870 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00013488
Устр-во Загр Начало Конец Блоки Id Система
/dev/loop0p1 * 1 1276 10249438+ 83 Linux
/dev/loop0p2 1277 4791 28234237+ f W95 расшир. (LBA)
/dev/loop0p3 4792 4870 634567+ 82 Linux своп / Solaris
/dev/loop0p5 1277 4791 28234206 83 Linux%%
Обратите внимание, что файлов устройств разделов (loop0p1 и т.д.) не существует. Если нужно будет "примонтировать" какой-то раздел из образа, то опять же надо использовать смещение:
losetup /dev/loop0 /path/to/image -o $((20499003*512))Проверяем что там получилось:
file -s /dev/loop0
/dev/loop0: Linux rev 1.0 ext3 filesystem data (large files)Теперь /dev/loop0 можно смонтировать с помощью mount и так же получить доступ к файлам.
Применительно к резервным копиям с помощью dd полезная статья http://mydebianblog.blogspot.ru/2008/03/dd.html
Комментариев нет:
Отправить комментарий