Предположим, контейнер называется 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 -
ВНИМАНИЕ ! Если просто делаете копию на том же сервере (давая копии контейнера другое имя), нужно поменять MAC-адрес контейнера.
Сначала посмотрите какой MAC-адрес используется у исходного контейнера:
incus config show cont-yuno-backup | grep -i hwaddr
Допустим, вывод показал такой адрес: 10:66:6a:41:df:bc
Тогда, с помощью команд задать новый адрес для контейнера-копии
Шаг 1. Удалить старый volatile MAC
incus config unset yuno-new volatile.eth0.hwaddr
Шаг 2. Задать новый MAC явно
incus config device set yuno-new eth0 hwaddr=10:66:6a:41:df:bd
То есть, даём адрес, которого нет ни у одного контейнера, в данном случае просто заменили последнюю16-ричную цифру.
-
Запустите:
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 по сети (если есть хоть какая-то связь между серверами).