Incus - бэкап, и восстановление контейнера на другом сервере
-
Предположим, контейнер называется cont-incus-yuno-1
Вот самый простой и надёжный способ перенести контейнер cont-incus-yuno-1 на другой компьютер с помощью Incus (работает для контейнеров, даже запущенных):
На исходном сервере (где контейнер сейчас работает)
-
Создайте экспорт (рекомендуется остановить контейнер для консистентности, но можно и на живую):
Вариант А — остановить (самый безопасный):
incus stop cont-incus-yuno-1 incus export cont-incus-yuno-1 cont-yuno-backup.tar.gz incus start cont-incus-yuno-1 # можно сразу запустить обратно, если нужноВариант Б — на живую (быстрее, но есть небольшой риск несогласованности файловой системы):
incus export cont-incus-yuno-1 cont-yuno-backup.tar.gzПолезные флаги (добавляйте по желанию):
--instance-only— очень рекомендуется, если не нужны снапшоты (файл будет намного меньше и быстрее создаваться)--optimized-storage— если хранилище позволяет (zfs/btrfs), делает ещё меньше размер
Пример с флагами (самый популярный вариант):
incus export cont-incus-yuno-1 cont-yuno-backup.tar.gz --instance-only --optimized-storageПолучится файл cont-yuno-backup.tar.gz (или как вы его назовёте) размером от нескольких сотен МБ до десятков ГБ — зависит от содержимого контейнера.
-
Перенесите файл на другой компьютер любым удобным способом:
- scp
- rsync
- флешка / внешний диск
- облако (если объём позволяет)
# пример через scp scp cont-yuno-backup.tar.gz user@новый-ip:/home/user/
На целевом сервере (куда переносите)
-
Убедитесь, что Incus установлен и работает той же или новее версии (экспорт с более новой версии на старую часто не работает).
-
Если контейнер использует нестандартные профили (кроме default), создайте их заранее на новом сервере:
incus profile list # посмотреть, какие профили есть # если нужно — скопируйте конфиг профиля и создайте: incus profile create myprofile incus profile edit myprofile -
Импортируйте:
incus import cont-yuno-backup.tar.gz cont-incus-yuno-1Или с другим именем, если хотите:
incus import cont-yuno-backup.tar.gz yuno-new -
Запустите:
incus start cont-incus-yuno-1 # или incus start yuno-new -
Проверьте, что всё работает:
incus list incus console cont-incus-yuno-1 # или incus exec ... -- bash
Полезные замечания
- Если после импорта контейнер не стартует из-за MAC-адреса → удалите/сгенерируйте новый:
# 1. Посмотреть, какой именно MAC "застрял" в базе Incus incus info incus-yuno-std | grep volatile.eth0.hwaddr # или полная картина incus config show incus-yuno-std --expanded | grep hwaddr # 2. Самый простой и безопасный способ — попросить Incus сгенерировать новый MAC incus config unset incus-yuno-std volatile.eth0.hwaddr # или явно задать новый (можно опустить — сам сгенерирует) # incus config set incus-yuno-std volatile.eth0.hwaddr 00:16:3e:xx:yy:zz # 3. Попробовать запустить incus start incus-yuno-std-
Если на новом сервере другое хранилище (например, был zfs, стал dir или btrfs) — импорт обычно проходит нормально, но иногда нужно указать пул:
incus import cont-yuno-backup.tar.gz cont-incus-yuno-1 --storage default -
Размер файла и время создания/переноса — главный ограничивающий фактор.
Если контейнер очень большой (>20–30 ГБ) — подумайте, не лучше ли воспользоваться
rsyncсодержимого илиincus copyпо сети (если есть хоть какая-то связь между серверами). -