Можно ли просто запаковать весь /var/discourse и запустить его на новом сервере?

Потому что при попытке миграции с использованием встроенного резервного копирования процесс сжатия быстро заполняет мой диск. У меня оставалось около 60 ГБ свободного места, но во время резервного копирования диск заполняется полностью, и процесс завершается ошибкой.

Однако, если я просто вручную сжимаю всю папку /var/discourse, архив занимает всего около 30 ГБ (сама папка — около 34 ГБ).

Поскольку место освобождается сразу после заполнения, я сделал скриншот при 80% заполненности.

Таким образом, у меня следующие вопросы:

•	Могу ли я просто упаковать всю папку /var/discourse с помощью tar, переместить её на новый сервер, распаковать и затем запустить Discourse?

•	Или мне нужно следовать рекомендованному способу (резервное копирование базы данных + отдельная копия загрузок)?

•	Существует ли способ избежать заполнения диска во время процесса сжатия при резервном копировании?

Привет,

Посмотрите это:

Да, наличие большего количества свободного места :slight_smile:

Если отбросить этот очевидный ответ, существуют запросы на добавление функции, предотвращающей использование избыточного места на диске при создании резервных копий, но они пока не реализованы: Reduce local disk space needs by not (redundantly) gzipping backups & Add option to disable backup compression

Кроме того, если вы ещё не выполнили команду

./launcher cleanup

у вас может быть много образов Docker, занимающих место.

Я думаю, что docker system prune может помочь

Я попробовал освободить место, удалив файлы до 44 ГБ на моём сервере, где всего доступно 98 ГБ, после чего снова запустил S3. Но всё равно не работает: недостаточно места. Не знаю, что именно Discourse говорил о том, что резервные копии такие большие.

[2025-08-20 10:11:31] Завершение создания резервной копии…

[2025-08-20 10:11:31] Создание архива: discourse-2025-08-20-101058-v20250812033430.tar.gz

[2025-08-20 10:11:31] Проверка, не существует ли уже архив…

[2025-08-20 10:11:31] Создание пустого архива…

[2025-08-20 10:11:31] Архивирование дампа данных…

[2025-08-20 10:11:31] Архивирование загруженных файлов…

[2025-08-20 10:16:35] Удаление временной директории ‘/var/www/discourse/tmp/backups/default/2025-08-20-101058’…

[2025-08-20 10:16:36] Сжатие архива с помощью gzip, это может занять некоторое время…

[2025-08-20 10:28:05] ИСКЛЮЧЕНИЕ: gzip -1 /var/www/discourse/public/backups/default/discourse-2025-08-20-101058-v20250812033430.tar

Не удалось сжать архив с помощью gzip.

gzip: /var/www/discourse/public/backups/default/discourse-2025-08-20-101058-v20250812033430.tar.gz: Нет места на устройстве

[2025-08-20 10:28:05] /var/www/discourse/lib/discourse.rb:171:in `execute_command’

/var/www/discourse/lib/discourse.rb:137:in `exec’

/var/www/discourse/lib/discourse.rb:32:in `execute_command’

/var/www/discourse/lib/backup_restore/backuper.rb:253:in `create_archive’

/var/www/discourse/lib/backup_restore/backuper.rb:40:in `run’

/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup’

/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in ’

/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork’

/var/www/discourse/script/spawn_backup_restore.rb:4:in `’

[2025-08-20 10:28:05] Удаление старых резервных копий…

[2025-08-20 10:28:06] Очистка временных файлов…

[2025-08-20 10:28:06] Удаление оставшихся файлов ‘.tar’…

[2025-08-20 10:28:07] Пометка резервной копии как завершённой…

[2025-08-20 10:28:07] Уведомление ‘VegaMonika’ об окончании создания резервной копии…

Кажется, вам нужно удалить файл .tar, оставшийся в /var/discourse/shared/standalone/backups/default

Похоже, у вас больше загрузок, чем поместится в резервную копию. Вам нужно будет (1) увеличить диск, (2) перенести активы в Spaces или S3, (3) перенести загрузки на том, (4) не делать резервные копии загрузок.

Самое простое немедленное решение после удаления файла .tar — не создавать резервные копии загрузок.

Я делал нечто подобное при переносе с одного экземпляра EC2 на более мощный, но с оговоркой, что новый сервер должен был иметь точно такое же базовое образ ОС, имя хоста, установленное программное обеспечение и IP-адрес, как и старый. После перемещения /var/discourse на новый сервер я выполнил launcher rebuild app, и сайт сразу же заработал.

Таким образом, в этих очень специфических условиях этот метод отлично сработал единственный раз, когда я его пробовал.

Это грязный способ перемещения, но при условии, что это установка по умолчанию и вы сначала остановите все свои контейнеры Docker, это, скорее всего, сработает.

snap remove aws-cli

.\launcher stop app

docker system prune

apt autoremove

.\launcher enter app

discourse backup

docker cp "app:/var/www/discourse/public/backups/default/your-site-2006-01-02-150405-v20200101150405.tar.gz" "root@[server_ip_address]:/var/discourse/shared/standalone/backups/default/your-site-2006-01-02-150405-v20200101150405.tar.gz"

exit

snap install aws-cli --classic

aws configure

aws s3 cp "/var/discourse/shared/standalone/backups/default/your-site-2006-01-02-150405-v20200101150405.tar.gz" "myBucket://your-site-2006-01-02-150405-v20200101150405.tar.gz"


aws s3 cp "/var/discourse/containers/app.yml" "myBucket://app.yml"