Предположим, контейнер называется cont-incus-yuno-1

Вот самый простой и надёжный способ перенести контейнер cont-incus-yuno-1 на другой компьютер с помощью Incus (работает для контейнеров, даже запущенных):

На исходном сервере (где контейнер сейчас работает)

  1. Создайте экспорт (рекомендуется остановить контейнер для консистентности, но можно и на живую):

    Вариант А — остановить (самый безопасный):

    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 (или как вы его назовёте) размером от нескольких сотен МБ до десятков ГБ — зависит от содержимого контейнера.

  2. Перенесите файл на другой компьютер любым удобным способом:

    • scp
    • rsync
    • флешка / внешний диск
    • облако (если объём позволяет)
    # пример через scp
    scp cont-yuno-backup.tar.gz user@новый-ip:/home/user/
    

На целевом сервере (куда переносите)

  1. Убедитесь, что Incus установлен и работает той же или новее версии (экспорт с более новой версии на старую часто не работает).

  2. Если контейнер использует нестандартные профили (кроме default), создайте их заранее на новом сервере:

    incus profile list          # посмотреть, какие профили есть
    # если нужно — скопируйте конфиг профиля и создайте:
    incus profile create myprofile
    incus profile edit myprofile
    
  3. Импортируйте:

    incus import cont-yuno-backup.tar.gz cont-incus-yuno-1
    

    Или с другим именем, если хотите:

    incus import cont-yuno-backup.tar.gz yuno-new
    
  4. Запустите:

    incus start cont-incus-yuno-1
    # или
    incus start yuno-new
    
  5. Проверьте, что всё работает:

    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 по сети (если есть хоть какая-то связь между серверами).