Возникла точно такая же проблема как у ТС, думал что создать образ флешки так же просто как и диска, но оказалось не так... и гуглил, и топик перечитал, и кучу прог знакомых мне и тех что в топике предлагали перепробовал, с разными настройками - никакого толку, размер образа равен объему флешки а не данных на ней, и все тут. Пользоваться акронисом, гостом и тд (которые могут это сделать как нужно) - не хочу, так как нужна универсальность образа, минимальный размер и портативность программы для заливки образа. Итак, перечитав топик, перепробовав и проанализировав всё, опытным путем было выявлено, что сделать это все же возможно, хоть и несколько геморно, но образ будет весить по объему данных и в стандартном формате - ima/img что позволит его писать хоть Flashnul'ом хоть UltraISO хоть WinImage и тд.
Расписывать подробно как использовать ту или иную программу - заламывает, но если кому-то нужно будет напишу. Здесь приведу только метод которым я добился успеха.
Цель: Создать образ загрузочной флешки, размер файлов на ней 89мб, объем самой флешки – 1гб.
Решение (мой вариант):
1) Как уже было предложено SashaNet, сперва нужно заполнить все сектора флешки нулями, я это сделал при помощи любимой программки – Flashnul (из командной строки flashnul.exe G: -F, где G – буква назначенная флеш-драйву), но после ее открытии в hex-редакторе (WinHex) обнаружил что в самом начале есть какие-то данные (бут-сектор), но ни при использовании flashnul.exe G: -F ни при flashnul.exe G: -B данные в нем не затираются. Хоть это большой роли и не играет, для чистоты эксперимента при помощи того-же WinHex’а затер нулями абсолютно всю флешку.
2) Быстрое форматирование (при необходимости).
3) Делаем над флехой все необходимые операции, не забывая о том, что на нее не следует записывать лишние файлы, которые потом будут удаляться, т.е. скидываем только нужные и ничего не удаляем, дабы все пустое пространство было заполнено нулями.
4) Если правильно выполнить пункт 3, то данные расположатся по порядку, т.е все свободное пространство будет расположено в конце флешки и заполнено нулями. При таком раскладе, во первых – образ будет архивироваться до размера данных и меньше, во вторых нули (свободное пространство) можно будет отрезать, чем я и занялся.
Метод первый, не слишком надежный но простой.
Смотрим в свойствах занятый объем, прибавляем к нему для перестраховки несколько лишних мб, после чего переводим это число в байты и при помощи Flashnul’а делаем образ, скопировав только первые n-байт (наше число). Допустим у нас 90мб данных, прибавим еще 5мб на всякий случай и переведем это в байты, после чего делаем образ: flashnul.exe G: -S "C:\Flash-Drive Image.img" -r=0; 99614720 и получаем образ весом в 95мб а не в гиг, если флеха гиговая. Недостаток данного метода в том что при некоторых обстоятельствах, полагаю все равно возможно обрезание файлов, поэтому следует сперва подсчитать контрольные суммы всех файлов, и после разворачивания этого образа проверить – все ли файлы в целостности.
Метод второй, надежный но посложнее.
Создаем образ обычным способом (ультраисо, винимейдж, флешнул и тд), например с помощью flashnul.exe G: -S "C:\Flash-Drive Image.img", открываем его с помощью hex-редактора (я делал в WinHex’е), смотрим где заканчиваются данные, это хорошо видно потому что пустота заполнена нулями (я на всякий случай делаю поиск с помощью регулярных выражений любого символа кроме нулей, чтоб убедиться что дальше ничего нет), выделяем пустое пространство и удаляем его :). Сохраняем и вуаля!
ЗЫ. Пока что пробовал только на одной флешке, проблем нет.