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

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

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

Прогнозирую, что есть иные способы:
3) Cкопировать dd только длину используемых данных раздела. Потом восстановить и ресайзнуть ФС.
Пробовал. Mount и resize2fs просят проверить ФС. А e2fsck, fsck жалуются на каждый утерянный блок. В общем, не вышло.
4) Как-то скопировать раздел в разреженный файл. И уже там ресайзнуть ФС.
5) Как-то создать COW блочное устройство, у которого readonly подложкой будет нужный раздел. И тогда спокойно ресайзить ФС на этом ссылочном устройстве.
  • Вопрос задан
  • 527 просмотров
Решения вопроса 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, но с задачей собрать с большого раздела небольшое количество файлов - справится. Бонусом идет то, что неважно какого размера будет раздел, на который все это разворачивается.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы