Не удается загрузить резервную копию

Привет!

Я только что установил Discourse на новый сервер и теперь пытаюсь загрузить резервную копию размером около 400 МБ.
Загрузка зависает на 40% с следующей ошибкой:
Слишком много запросов с этого IP-адреса. Пожалуйста, повторите попытку через 2 секунды. Код ошибки: ip_10_secs_limit.

Что это такое и как это исправить?

В качестве обходного пути вы можете загрузить резервную копию через SCP. Дополнительную информацию см. по адресу Restore a backup from the command line. @martin Не может ли это быть вызвано переходом на Uppy?

Я перешел по вашей ссылке для восстановления резервной копии через CLI, но ничего не восстановилось — всё осталось как при чистой установке.

Есть ли в резервной копии «старый» файл app.yml и будет ли он перезаписан при восстановлении? Если нет, то вся резервная копия бесполезна.

Я попытался восстановить резервную копию через интерфейс Discourse, и теперь у меня пустой сайт.

Ниже вывод команды при попытке восстановить резервную копию из командной строки. Конечно, я следовал инструкциям по ссылке, но, похоже, что-то изменилось.

Starting restore: backup-2021-12-06-185610-v20211201221028.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2021-12-18-163225 exists...
Copying archive to tmp directory...
EXCEPTION: lib/discourse.rb:127:in `exec': Failed to copy archive to tmp directory.
cp: cannot stat '/var/www/discourse/public/backups/default/backup-2021-12-06-185610-v20211201221028.tar.gz': No such file or directory
lib/discourse.rb:154:in `execute_command'
lib/discourse.rb:127:in `exec'
lib/discourse.rb:34:in `execute_command'
/var/www/discourse/lib/backup_restore/local_backup_store.rb:42:in `download_file'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:62:in `copy_archive_to_tmp_directory'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:22:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/cli.rb:477:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/cli.rb:31:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/cli.rb:25:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/exe/bundle:49:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/lib/bundler/friendly_errors.rb:128:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.26/exe/bundle:37:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2021-12-18-163225' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

Значит, вы поместили файл в неправильное место или указали неверное имя файла. Если дело во втором, то

   discourse restore

без указания имени файла покажет доступные файлы.

Если вы выполните

     discourse backup

вы увидите, куда был помещён файл. Я не буду пытаться ввести правильный путь с телефона.

Нет, я сделал всё именно так, как написано здесь:

Так что если этот путь неверен, то ошибка в руководстве. Именно поэтому я и спросил, куда именно нужно поместить файл.

Очень легко ошибиться при вводе. Вот почему я предложил способы проверить, что всё находится на правильном месте. Вы пробовали

  discourse restore

без указания имени файла?

Я понимаю, о чём вы. Но я всё сделал в точности по инструкции (без ошибок, скопировал пути), поэтому спрашиваю: не ошибочны ли сами инструкции или что-то изменилось в путях за последние два года?

Я попробую ещё раз, но, возможно, мне придётся переустановить Discourse, потому что сейчас у меня только пустой сайт.

Думаю, этот фрагмент нельзя скопировать и вставить без изменений?

Я думаю, что путь назначения верный, иначе они должны были указать, куда именно его переместить.

А, я понял. Я воспринял ваш пост так: «Я не мог ошибиться при вводе, так как всё скопировал и вставил из руководства». :slightly_smiling_face:

Итак, я мог бы восстановить резервную копию с помощью discourse restore, но некоторые категории отсутствуют, полностью отсутствует заголовок, я не могу войти в систему, файл app.yml всё ещё такой же, как при чистой установке, и многое другое.
Резервная копия была сделана 06.12.21, и я выбрал опцию резервного копирования всего, но половина данных отсутствует.

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

Это, должно быть, невероятно расстраивает. Мне вас жаль.

Файл app.yml не включается в резервную копию Discourse. Вам нужно будет скопировать его из вашей старой установки или создать новый.

Об этом следовало сообщить в момент создания резервной копии (в виде уведомления в конце). У меня нет доступа к старому файлу, создать новый можно, но я не помню, какие у меня были плагины.

Но тогда остаётся вопрос: почему отсутствуют некоторые категории и темы, почему пропал заголовок и почему я не могу войти в систему.

В этом я не уверен. :slightly_smiling_face: Вы запустили ./launcher discourse-setup на вашем новом экземпляре?

Да, конечно. Или мне не стоит этого делать для восстановления? Или вы имеете в виду после восстановления?

Я думал, что это может восполнить некоторые недостающие части, но не уверен.

Возможно, стоит взять файл резервной копии и восстановить его на свежий Discourse с обновлённым app.yml, чтобы посмотреть, станет ли лучше.

Это была чистая установка на новом сервере, и я думал, что app.yml есть в резервной копии, но ошибся. У меня нет доступа к «старому» экземпляру Discourse, поэтому, похоже, восстановить файл app.yml невозможно.

Вы можете отредактировать существующий файл app.yml, чтобы добавить то, что, по вашему мнению, в нём отсутствует? Однако я не уверен, что могло помешать копированию категорий или данных для входа.

Вы восстанавливали полный файл резервной копии? Тот, о котором говорится в первом сообщении, остановился на 40%. Если вы восстановили эту версию, это может объяснить, почему половина ваших данных отсутствует?

Пока я лишь предполагаю. :slightly_smiling_face: Извините, что не смог помочь больше.

Извините, что у вас возникли такие проблемы. Я не могу объяснить, как это могло произойти.

Не могу представить, чтобы резервная копия восстанавливала только некоторые категории. Если восстановлены только некоторые категории, значит именно они и содержались в той резервной копии, которую вы сделали. Возможно, у вас старая резервная копия.

Файл app.yml не имеет никакого отношения к вашим данным, он содержит только имя хоста и другие настройки, необходимые для установки Discourse. Вы можете восстановить любую базу данных на любой сайт.

Я переустановлю Discourse (с новым образом сервера) и снова попробую восстановить резервную копию.

Зависание на 40% произошло при загрузке непосредственно в Discourse; после этого я скопировал резервную копию на сервер через SCP.

Да, это верно, но я думал, что в резервной копии также сохранятся какие-то важные данные. Теперь я не знаю, какие плагины были установлены в старом экземпляре и какие у них были настройки.
Резервная копия была сделана 6 декабря этого года, то есть всего несколько дней назад.