LINUX.ORG.RU

Создание образа флешки без пустот

 , , ,


0

3

Столкнулся с проблемой. Имеется флешка (загрузочная). Хочу создать с неё iso-образ, но информации на ней меньше гигобайта, а обрас получается размером с целую 16Gb флешку. Собственно аналогичная ситуация при резервном копировании целого жесткого диска. Когда там кроме операционки еще куча программ, но объем всёравно не превышиет 20 Гб однако создание образа занимает все 250Гб, что не кошерно, на мой взгляд. Как-то можно создать образ без пустого места на диске? Первое что приходит в голову это dd, но либо плохо искал, либо нет такой возможности (пропустить именно пустые блоки).

Сразу оговорюсь: акронис не интересует. Знаю, пользовался, прикольно, но не то, да и не всегда есть под рукой. И молчу уже про платность.

Clonezilla. Правда это мальца из пушки по воробьям, но работает

ionanahin ★★★ ()

dd позволяет отправлять информацию в буфер обмена, а значит через | её можно отправить на gzip.
И вроде как ещё сообщения через &> в /dev/null отпоавлять нужно.
Точно опции и конкретику не помню.

torvn77 ★★★★ ()

Если dd и сжимать, то надо будет сначала каким-нибудь вайпером по свободному месту пройтись, чтобы там нули были.

В любом случае спецсофт предпочтительнее будет.

Radjah ★★★★★ ()

Если у тебя на флешке iso-файл, то нужно определить его размер (isoinfo для этого), затем dd указать количество блоков и их размер, чтобы в произведении давало такой же размер. Можно не заморачиваясь взять блоки 2048 как на CD, а количество указать выданное isoinfo, хотя может для скорости это будет неоптимально, можно пересчитать, копируя блоками побольше количеством в соответствующее число раз меньше.

Если у тебя всё-таки не исошка, а какая-то файловая система, то нужно воспользоваться утилитой, которая работает именно с этой файловой системой (ntfsdump например), можно заполнить нулями свободное место и воспользоваться любым сжатием, а можно применить GNU ddrescue и сформировать sparse-файл, который будет размером в те же 16 гигбайт, но места будет занимать столько, сколько участков не с нулями.

Xenius ★★★★★ ()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Radjah

то надо будет сначала каким-нибудь вайпером по свободному месту пройтись, чтобы там нули были.

dd if=/dev/zero of=/file/on/mounted/filesystem и потом удалить этот файл.

Xenius ★★★★★ ()

на уровне блочного устройства, можно применить тока сжатие. на уровне ФС есть интересные варианты

axelroot ()

С помощью dd создать файл нужного размера, создать с помощью fdisk в этом файле таблицу разделов с нужным количеством самих разделов и с помощью mkfs нужные файловые системы на этих разделах. С помощью losetup создать блочное устройство, разделы смонтировать, примонтировать образ и с помощью cp скопировать файлы. Затем с помощью dd скопировать первые 446 байт загрузочного сектора образа в MBR файла и с помощью dd залить получившийся образ на флешку.

yars068 ★★★★ ()

Мне кажется всё на много проще: изменить размер fs, а потом делать образ раздела, не всего устройства.

yurikoles ★★★ ()

Так просто бери и делай. Я слабо помню уже, но банально просто архиватор file-roller сделал мне iso с диска с сжатием пустого места. Там то ли самому расширение дописать, то ли готовый пресет есть для этого.

anonymous ()
Ответ на: комментарий от torvn77

dd позволяет отправлять информацию в буфер обмена, а значит через | её можно отправить на gzip.
в буфер обмена

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

gzip - это gzip в результате его распаковки получатся те же 16Гб (на примере флехи) и их помимо самого файла нужно куда-то распаковать, да и процесс сжатия/расжатия даже 16Гб не самый быстрый, а голый iso подсунул в программу для записи (например) и вперед.

ilmenshik ()
Ответ на: комментарий от yurikoles

соглашусь с kostik87, иногда это процедура может слишком много времени сожрать, а та же Win XP может еще и не запуститься после shrink (на собственном опыте проверял)

ilmenshik ()
Ответ на: комментарий от Belen

Спасибо за советы, попробую: partimage, Clonezilla, FSArchiver, file-roller и отпишусь по результатам.

ilmenshik ()
Ответ на: комментарий от yars068

хороший вариант, только почему именно 446, и можно ли этот метод как-то упростить?

ilmenshik ()
Ответ на: комментарий от ilmenshik

я к тому что я пока не на столько хорошо оперирую с разметкой, и для меня пока не понятно как и чего...

вот если я создаю образ с одного из двух разделов жесткого загрузчик создается или нужно делать образ со всего диска?

для меня это всё пока темный лес..

ilmenshik ()

Попробуй UltraISO в Windows. Эта программа умеет копировать загрузочную область. Затем её можно добавить в образ ISO с помощью k3b или Nero Linux.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от ilmenshik

Если темный лес, ставь qt4-fsarchiver - в gui все расписано.

AndGaz ()
Ответ на: комментарий от ilmenshik

почему именно 446

Потому что есть MBR, ее размер равен 512 байт, из них 446 отведено на stage1 загрузчика. Подробнее.

можно ли этот метод как-то упростить?

Куда проще-то?

yars068 ★★★★ ()
Последнее исправление: yars068 (всего исправлений: 1)
Ответ на: комментарий от ilmenshik

а бананы на дереве растут, прямо из буфера обмена.

t184256 ★★★★★ ()
Ответ на: комментарий от yars068

dd if=/dev/zero of=bunny.iso count=1638400

1638400+0 records in
1638400+0 records out
838860800 bytes (839 MB) copied, 4,6173 s, 182 MB/s

parted bunny.iso mktable msdos
mkfs.fat -F32 -v -I -n «BUNNY» bunny.iso

mkfs.fat 3.0.26 (2014-03-07)
bunny.iso has 64 heads and 32 sectors per track,
hidden sectors 0x0000;
logical sector size is 512,
using 0xf8 media descriptor, with 1638400 sectors;
drive number 0x80;
filesystem has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 1597 sectors, and provides 204396 clusters.
There are 32 reserved sectors.
Volume ID is d6116473, volume label BUNNY      .

parted bunny.iso print

Model:  (file)
Disk /home/u/bunny.iso: 839MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0,00B  839MB  839MB  fat32

mount -o loop bunny.iso /mnt
cp -vfr /media/u/BUNNY/* /mnt/
umount /mnt

И собственно вот тут загвоздка.

dd if=/dev/sdb of=bunny.iso bs=466 count=1

1+0 records in
1+0 records out
466 bytes (466 B) copied, 0,000404931 s, 1,2 MB/s

ls -l bunny.iso

-rw-r--r-- 1 libvirt-qemu kvm 466 дек.   2 16:00 bunny.iso
Что в принципе логично. Но а как правильно сделать?

ilmenshik ()
Ответ на: комментарий от ilmenshik

Вдруг и такой вариант кому понравится

Понимаю тема уже закрыта, но если кто-то как и я будет искать ответ на такую проблему, хочу показать как я решил. Из статьи http://www.natalink.ru/articles/sozdanie_obraza_zhestkogo_diska_pri_pomoschi_...

1) делаем «на лету» архивированный образ: dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img

2) заливаем архив образ на устройство: gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M

в обоих случаях bs=8M conv=sync,noerror можно опустить, но дают свои плюхи. читайте отдельно)

AbyssRT ()

Gzip, bzip2, lzma и т.д. и т.п.
ЗЫ имхо tar полезнее для резервирования в разы.

erfea ★★★★★ ()
Последнее исправление: erfea (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.