Как правильно перенести контейнеры с одного сервера на другой в LXC 5.0?

Как правильно перенести контейнер LXC, использующий файловую систему Btrfs, на другой сервер или создать его резервную копию и восстановить ее на другом сервере?
  • 3 октября 2023 г. 9:57
Ответы на вопрос 2
1. Перенос контейнера на другой сервер:
   - Остановите контейнер на первом сервере:
     ```
     lxc stop <container_name>
     ```

   - Запакуйте контейнер в архив:
     ```
     lxc publish <container_name> --alias <new_container_name>
     ```

   - Сохраните архив на сервере назначения:
     ```
     lxc image export <new_container_name> <path_to_save>
     ```

   - Импортируйте архив на сервер назначения:
     ```
     lxc image import <path_to_save>
     ```

   - Запустите контейнер на втором сервере:
     ```
     lxc launch <new_container_name> <new_container_name>
     ```

2. Создание резервной копии контейнера и восстановление на другом сервере:
   - Создайте снимок контейнера на первом сервере:
     ```
     lxc snapshot <container_name> <snapshot_name>
     ```

   - Сохраните снимок на сервере назначения:
     ```
     lxc copy <container_name>/<snapshot_name> <new_container_name>
     ```

   - Запустите контейнер на втором сервере:
     ```
     lxc start <new_container_name>
     ```

3. Если вы используете файловую систему Btrfs и хотите скопировать контейнер вместе с данными, можно воспользоваться командой btrfs send/receive:
   - Создайте снимок контейнера на первом сервере:
     ```
     lxc snapshot <container_name> <snapshot_name>
     ```

   - Сохраните снимок на сервере назначения:
     ```
     lxc publish <container_name>/<snapshot_name> --alias <new_container_name>
     lxc image export <new_container_name> <path_to_save>
     ```

   - Импортируйте снимок на сервер назначения:
     ```
     lxc image import <path_to_save>
     ```

   - Запустите контейнер на втором сервере:
     ```
     lxc launch <new_container_name> <new_container_name>
     ```

   Обратите внимание, что для успешной работы btrfs send/receive на обоих серверах должны быть установлены и настроены btrfs и lxc.
   
   Кроме того, для переноса контейнера с файловой системой Btrfs можно использовать другие инструменты, такие как rsync или scp, для копирования файлов контейнера на новый сервер и настройки нового контейнера на базе скопированных файлов.
Стопните контейнер на первом сервере и создайте контейнер с нужной операционной системой на втором сервере. Затем снова запустите созданный контейнер. 
Выполните команду rsync, чтобы скопировать данные с первого контейнера на второй сервер:
```
rsync -avP /var/lib/контейнер/rootfs/ [email protected]:/var/lib/контейнер/rootfs/
```
Затем выполните еще одну команду rsync для удаления лишних файлов на новом контейнере:
```
rsync -avP --delete /var/lib/контейнер/rootfs/ [email protected]:/var/lib/контейнер/rootfs/
```
Наконец, запустите новый контейнер.
Похожие вопросы