Как создать маленький(только данные) образ большого раздела?

У способа cp /dev/sdXY ~/file.img недостаток в том, что он копирует данные + не занятое пространство.
А как бы сделать чтобы образ был без пустот?

Доступные способы:
1) Уменьшить оригинальную файловую систему и тогда снять образ.
Это работает, но не хочется лишний раз тревожить разметку диска.
2) Создать раздел нужного размера и перекопировать туда данные файлами.
Это работает, но надо соблюсти права; не ходить по ссылкам; мало ли ещё какие хитрые файлы попадутся. А в случае множества мелких файлов скорость копирования будет низкой.

Прогнозирую, что есть иные способы:
3) Cкопировать dd только длину используемых данных раздела. Потом восстановить и ресайзнуть ФС.
Пробовал. Mount и resize2fs просят проверить ФС. А e2fsck, fsck жалуются на каждый утерянный блок. В общем, не вышло.
4) Как-то скопировать раздел в разреженный файл. И уже там ресайзнуть ФС.
5) Как-то создать COW блочное устройство, у которого readonly подложкой будет нужный раздел. И тогда спокойно ресайзить ФС на этом ссылочном устройстве.
  • Вопрос задан
  • 584 просмотра
Решения вопроса 1
@glaucidium Автор вопроса
Поставил бы решением ответ от Valentin Barbolin, да он ответил не туда.

https://www.baeldung.com/linux/clone-space-in-use-...
Оказывается, у dd есть опция conv=sparse, которая позволит скопировать раздел в разреженный файл.
Только перед этим надо свободное пространство на разделе забить нолями. (dd if=/dev/zero of=/mnt/sdXY/zero; rm /mnt/sdXY/zero)
А если нужно записать разреженный образ на реальный раздел, то можно смонтировать его как loop устройство и уменьшить ФС.
https://askubuntu.com/questions/260620/resize-dev-...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@pfg21
ex-турист
Есть такая утилита partclone одной из особенностей которой умение распарить заголовок файловой системы и скопировать в образ раздела только использованные фс блоки.
Знает кучу фс.
https://ru.linux-console.net/?p=11393#gsc.tab=0
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Я один помню про команду dump? Да, он создает не образ, для развертывания нужно запустить restore, но с задачей собрать с большого раздела небольшое количество файлов - справится. Бонусом идет то, что неважно какого размера будет раздел, на который все это разворачивается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы