Давно заданный вопрос так и остался без решения. Однако, сейчас встала задача и данный вопрос снова стал актуальным.
Занялся чуть более вдумчиво и...
Ставим Debian 11 на виртуалку. Монтируем qcow2 через nbd, потом / монтируем в /mnt
cd /mnt
tar -cvpfz /srv/debian.tar.gz .
Ой. Забыл совет: Debian по стандартной разбивке не выделяет отдельный раздел под /boot, потому лучше бить вручную. /boot мы трогать не будем.
Создался архив. Крысота!
rm -fr /mnt/*
ls /mnt
Ой! Пусто! Что же я наделал????
Но есть же архив!
cd /mnt
tar -xvzpf /srv/debian.tar.gz
sync
Отмонтируемся. Запускаем виртуалку. Зашибись! Система работает.
Но мы не ищем простых путей. Хочется иметь универсальный способ. Fedora у меня в прошлый раз не заработала. Точнее, заработала, но не дала авторизоваться. После ввода пароля мгновенное нечитаемое сообщение и снова приглашение авторизации.
На виртуалку ставим Centos 8 Stream. С Федориным горем находятся в ближайшем родстве.
Повторяем все издевательства как с Debian. Система запускается, но ровно с тем же результатом. После ввода пароля на мгновение нечитаемое сообщение и снова запрос авторизации.
Сука-а-а!
Заново гасим, монтируем лезем смотреть логи.
Мать! Хрен поймёшь! Вроде все норм, но почему-то всплывают невнятные сообщения от selinux. Тааак! Я же не отключал этот глюк! Фактически, доставил пару пакетов на свежую систему и больше ни чего не делал.
Отрубаем selinux. Размонтируемся. Загружаемся. Авторизуемся.
Все работает! Что-то не понравилось selinux, но с ним нет ни какого желания разбираться. Все равно он у меня всегда живёт в DISABLED режиме.
Если кто-то знает, как договориться с selinux - напишите! Я с ним разбираться не хочу, но для расширения кругозора, не помешает.
В общем, можно прекрасно быкапить систему в оффлайне с помощью tar. И не только быкапить, но и восстанавливать!))
Многие удивятся: нахрена тебе этот геморрой, если есть снапшоты у вартуалки, да и LVM можно снапшотить... Для чего?
Да потому что не снапшот!
Я снапшотами даже на виртуалках не пользуюсь.
Слишком велики накладные расходы!
А такой способ бэкапа ни к чему не обязывает. Нужно лишь место для хранения архивов.
Но,на самом деле, вернуться к этой проблеме меня заставила другая необходимость.
Нужно заливать прошивки на устройства. На много тысяч устройств.
Можно, конечно, ставить систему и дальше на нее заливать нужный софт. Ansible в помощь.
Но такой подход не плох, когда нужно залить один девайс. Ну, десяток!
А если больше, то это совсем беда.
А так подготавливаем один девайс. Тестим.
Если все зашибись, то с помощью dd снимаем /boot раздел. Дальше / архируем tar.
Осталось лишь автоматизировать процес, но это ерунда! Не шибко большой bash скрипт сумеет разбить диск, залить /boot, распаковать архив в / раздел.
Быстро и следить не нужно.
Осталось лишь разобраться с "анонимизацией" эталонной системы.
Буду очень благодарен, если кто-то подскажет, что и как убивать в эталонной системе, что бы ее можно было клонировать на тысячи однотипных устройств.