Как сжать файл изображения после выделения полного пространства


13

Я экспериментирую с резервным копированием SD-карты Raspberry Pi (Raspbian). Я использую Win32DiskImager для чтения изображения (из устройства чтения карт SD) на мой жесткий диск, но теперь проблема с размером. Изображение просто больше оригинальной SD-карты и может быть записано только на большую SD-карту, которая, если вы создаете резервную копию, имеет ту же проблему.

Как я могу снова удалить все неиспользуемое пространство после создания файла .img? (это потому, что я использовал raspi-config для выделения всего доступного пространства для корня?)

Я попытался понять, как выглядят разделы с Cygwin, но не удается заставить работать fdisk (-bash: fdisk: команда не найдена) - (после прочтения образа карты 16 Гб, содержащей нераспределенное пространство, в конец: усечение возможно? )

Ответы:


12

Поэтому лучший способ, который я нашел, - это использовать GParted (вы можете использовать ОС на базе Linux или загрузиться с GParted Live USB). Достаточно просто найти подробные инструкции о том, как подробно выполнить каждый из этих шагов, но вот общий метод, который я нашел для работы:

  1. Запустите GParted, найдите свою SD-карту в списке устройств и уменьшите основной раздел до минимума.
  2. Возьмите значение последнего сектора этого раздела и умножьте его на размер сектора (для меня 512; я полагаю, это стандартно, хотя вы можете проверить это в настройках GParted для вашего устройства): это даст вам общий размер в байтах копировать.
  3. Разделите общее количество байтов на 4096 (округлите, если вам нужно - лучше занять немного больше места, чем недостаточно), и это даст вам «счет», чтобы затем ввести следующую команду на терминале в Linux окружение (вы, вероятно, можете сделать это из терминала операционной системы GParted Live USB или из Cygwin без sudo, если вы используете его как администратор):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

Измените местоположение устройства ввода, если вам нужно. Это должно дать вам окончательный файл изображения, который будет наименьшим, без пустого пространства.


Я могу убедиться, что это работает. Я только что несколько минут назад пытался перейти с карты на 8 ГБ на карту на 4 ГБ. Это должно работать при условии, что ваши данные меньше, чем ваша карта назначения.
PNDA

Сортировать забыл об этом посте, так как я перешел. Попробую это в будущем. Похоже, это общая проблема, так что спасибо за ваш вклад.
Ренье Дельпорт

Это должно быть помечено как правильный ответ! Благодарность!
Родрипф

никак на винде?
Вспышка грома

1
Вы можете загрузиться с GParted Live USB.
Майк Робертс

7

Существует хороший инструмент под названием pishrink, который максимально уменьшает размер изображения dd путем сжатия корневого раздела. Если вы запустите восстановленный образ в первый раз, раздел снова увеличится до максимального размера. Если вы используете Windows, просто используйте Linux на Raspberry, чтобы уменьшить изображение.


0

В последней версии Win32DiskImager есть опция «Только для чтения». Он пишет только использованное пространство, а не пустое.

  1. Сократите раздел на SD-карте с помощью GParted.
  2. Создайте образ с Win32DiskImager с карты большего размера.
  3. Запишите образ с Win32DiskImager на карту меньшего размера, используя опцию, упомянутую выше.

-1

Ответ прост: ты не можешь. Если вы хотите уменьшить изображение, используйте сжатие, что большинство и делает (в NIX хорошо работает gzip). Вы найдете много дискуссий по этому вопросу на этом сайте.

Альтернативой является резервное копирование только файлов. Мой подход описан ниже. /raspberrypi//a/28087/8697


1
Вы можете (если содержание данных меньше, чем у новой SD-карты)
Уилф

2
Сжатие не поможет. Это не вопрос дискового пространства, где находится файл IMG. Это вопрос места на SD-карте, куда IMG-файл должен быть записан
Томас Уэллер

@Thomas Сжатие файла IMG сделает его меньше, так что он (надеюсь) помещается на SD-карту, на которую вы хотите записать .... Я что-то упустил?
user253751

@immibis: Вы можете сжать файл IMG, чтобы он занимал меньше места на жестком диске вашего компьютера. Если вы запишите данные в формате gzip на SD-карты, они не загрузятся. Для загрузки данные должны быть в правильном формате, а не в формате gzip.
Томас Веллер

@ Томас О, я думал, что ОП хотел по какой-то причине хранить свои резервные копии на другой SD-карте, а не восстанавливать их.
user253751
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.