пятница, 24 июля 2015 г.

Извлечение несколько файлов из бэкапа Clonezilla

Есть полный бэкап диска, выполненный в clonezilla. Нужно вытащить несколько файлов с рабочего стола пользователя.

Сначала смотрим что есть в бэкапе:

$ cd /data/Backups/2015-07-23-14-img
$ ls -1
total 16625923
-rw------- 1 root root        583 Jul 23 17:09 blkdev.list
-rw------- 1 root root        197 Jul 23 17:09 blkid.list
-rw------- 1 root root       6036 Jul 23 17:23 clonezilla-img
-rw------- 1 root root          4 Jul 23 17:17 disk
-rw------- 1 root root      20560 Jul 23 17:17 Info-dmi.txt
-rw------- 1 root root      24254 Jul 23 17:17 Info-lshw.txt
-rw------- 1 root root       2243 Jul 23 17:17 Info-lspci.txt
-rw------- 1 root root        171 Jul 23 17:17 Info-packages.txt
-rw------- 1 root root         90 Jul 23 17:23 Info-saved-by-cmd.txt
-rw------- 1 root root         10 Jul 23 17:17 parts
-rw------- 1 root root         33 Jul 23 17:10 sda1.info
-rw------- 1 root root    9588755 Jul 23 17:09 sda1.ntfs-ptcl-img.gz.aa
-rw------- 1 root root 2097152000 Jul 23 17:10 sda2.ntfs-ptcl-img.gz.aa
-rw------- 1 root root 2097152000 Jul 23 17:11 sda2.ntfs-ptcl-img.gz.ab
-rw------- 1 root root 2097152000 Jul 23 17:12 sda2.ntfs-ptcl-img.gz.ac
-rw------- 1 root root 2097152000 Jul 23 17:13 sda2.ntfs-ptcl-img.gz.ad
-rw------- 1 root root 2097152000 Jul 23 17:15 sda2.ntfs-ptcl-img.gz.ae
-rw------- 1 root root 2097152000 Jul 23 17:15 sda2.ntfs-ptcl-img.gz.af
-rw------- 1 root root 2097152000 Jul 23 17:16 sda2.ntfs-ptcl-img.gz.ag
-rw------- 1 root root 2097152000 Jul 23 17:17 sda2.ntfs-ptcl-img.gz.ah
-rw------- 1 root root  237018999 Jul 23 17:17 sda2.ntfs-ptcl-img.gz.ai
-rw------- 1 root root         37 Jul 23 17:09 sda-chs.sf
-rw------- 1 root root    1048064 Jul 23 17:09 sda-hidden-data-after-mbr
-rw------- 1 root root        512 Jul 23 17:09 sda-mbr
-rw------- 1 root root        319 Jul 23 17:09 sda-pt.parted
-rw------- 1 root root        281 Jul 23 17:09 sda-pt.parted.compact
-rw------- 1 root root        259 Jul 23 17:09 sda-pt.sf

Нужные нам данные хранились на втором разделе (sda2). Для восстановления нам понадобится partclone и pigz (вместо pigz можно использовать gzip, но восстановление займет больше времени)

$ sudo apt-get install partclone pigz

Восстановим сырой образ второго раздела в файл:

# cat sda2.ntfs-ptcl-img.gz.a* | pigz -dc | partclone.restore -C -s - -O /data/Backups/sda2-restore.bin --restore_raw_file
Partclone v0.2.73 http://partclone.org
Starting to restore image (-) to device (/data/Backups/sda2-restore.bin)
Reading Super Block
Calculating bitmap... Please wait... done!
File system:  NTFS
Device size:  119.9 GB = 29278719 Blocks
Space in use:  56.3 GB = 13755539 Blocks
Free Space:    63.6 GB = 15523180 Blocks
Block size:   4096 Byte
Elapsed: 00:17:22, Remaining: 00:00:00, Completed: 100.00%, Rate:   3.24GB/min, 
current block:   16720764, total block:   29278719, Complete: 100.00%           
Total Time: 00:17:22, Ave. Rate:    3.2GB/min, 100.00% completed!
Syncing... OK!
Partclone successfully restored the image (-) to the device (/data/Backups/sda2-restore.bin)
Cloned successfully.

Пробуем смонтировать образ

$ sudo mount -o loop,ro /data/Backups/sda2-restore.bin /mnt
Failed to read last sector (234229758): Invalid argument
HINTS: Either the volume is a RAID/LDM but it wasn't setup yet,
   or it was not setup correctly (e.g. by not using mdadm --build ...),
   or a wrong device is tried to be mounted,
   or the partition table is corrupt (partition is smaller than NTFS),
   or the NTFS boot sector is corrupt (NTFS size is not valid).
Failed to mount '/dev/loop0': Invalid argument
The device '/dev/loop0' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

но получаем ошибку при попытке прочесть сектор, находящийся за пределами восстановленного файла. Дело в том, что partclone не копирует незанятые области и в данном случае мы получили образ меньшего объема, чем изначальный размер исходного раздела. Чтобы исправить нужно либо увеличить размер образа до заведомо большего объема, либо посмотреть в информации clonezilla правильный размер.

Я опишу второй способ. Смотрим в файле sda-pt.parted информацию о исходном диске:

$ cat sda-pt.parted
Model: ATA Samsung SSD 840 (scsi)
Disk /dev/sda: 234441648s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start    End         Size        Type     File system  Flags
 1      2048s    206847s     204800s     primary  ntfs         boot
 2      206848s  234436607s  234229760s  primary  ntfs

Размер сектора диска 512 байт, размер второго раздела (sda2) - 234229760 секторов. Значит правильный размер образа файла - 512 * 234229760 = 119925637120 байт. Изменим размер файла образа и попробуем смонтировать образ

$ truncate -s $((512 * 234229760)) /data/Backups/sda2-restore.bin
$ sudo mount -o ro,loop /data/Backups/sda2-restore.bin /mnt

Теперь монтирование прошло без ошибок и можно вытаскивать файлы.

Комментариев нет:

Отправить комментарий