백업 파일을 업로드할 수 없습니다

안녕하세요!

새 서버에 Discourse를 설치했고, 이제 약 400MB 용량의 백업 파일을 업로드하려고 합니다.
40%에서 다음 오류와 함께 멈춰 있습니다:
Slow down, too many requests from this IP address. Please retry again in 2 seconds. Error code: 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

파일을 지정하지 않고 시도해 보셨나요?

무엇을 말씀하시는지 잘 압니다. 하지만 저는 정확히 설명서에 따라 수행했습니다(경로를 복사하면서 실수하지 않았는데도요). 그래서 설명서가 잘못되었는지, 아니면 지난 2년 동안 경로가 변경되었는지 여쭙고 싶습니다.

다시 시도해 보겠지만, 지금은 사이트가 텅 비어 있으니 Discourse를 다시 설치해야 할 수도 있습니다.

이 부분을 수정 없이 그대로 복사해서 붙여넣을 수 없다고 생각하는데, 맞나요?

대상 경로는 올바른 것 같습니다. 그렇지 않다면 정확히 어디로 이동해야 하는지 알려야 할 텐데요.

아, 알겠습니다. 그 글을 '가이드에서 전부 복사해서 붙여넣었으니 오타는 있을 리가 없지’라고 이해했네요. :slightly_smiling_face:

그래서 discourse restore로 백업을 복원할 수는 있지만, 일부 카테고리가 없고, 헤더 전체가 누락되어 있으며, 로그인도 되지 않고, app.yml 파일은 신규 설치와 동일하며, 그 외에도 여러 문제가 있습니다.
백업은 2021년 12월 6일에 생성한 것으로, 모든 항목을 백업하도록 선택했는데도 불구하고 절반 정도가 누락되어 있습니다.

따라서 저에게 백업 및 복원 과정은 완전히 엉망입니다!

정말 답답하셨겠어요. 마음이 아픕니다.

app.yml 파일은 Discourse 백업에 포함되지 않습니다. 기존 인스턴스에서 해당 파일을 복사해 오거나, 새 파일을 직접 편집해야 합니다.

백업이 생성되는 시점에 이 정보가 표시되어야 합니다(마지막에 정보 메시지로). 저는 기존 파일에 접근할 수 없으며, 새 파일을 만드는 것은 가능하지만 어떤 플러그인을 사용했는지 기억나지 않습니다.

하지만 여전히 일부 카테고리 및 토픽이 누락되어 있고, 헤더가 없으며 로그인도 불가능한 이유에 대한 질문이 남아 있습니다.

저도 그 부분은 확신이 없습니다. :slightly_smiling_face: 새 인스턴스에서 ./launcher discourse-setup을 실행해 보셨나요?

네, 물론이죠. 아니면 복구를 위해 이걸 실행하면 안 되는 건가요? 아니면 복구 후에 실행하라는 말씀이신가요?

그렇게 하면 누락된 부분을 일부 채울 수 있을 것 같지만, 확신은 없습니다.

백업 파일을 가져와서 업데이트된 app.yml과 함께 새로운 Discourse에 복원해 보고, 그렇게 하면 상황이 나아지는지 확인해 보는 것도 좋을 수 있습니다.

새 서버에全新 설치한 것이었고, app.yml 파일이 백업에 있을 거라고 생각했지만 틀렸습니다. ‘구’ Discourse 인스턴스에 접근할 수 없으므로 app.yml 파일을 복원할 방법이 없는 것 같습니다.

기존 app.yml 파일을 편집해서 빠진 것들을 추가할 수 있을까요? 범주나 로그인 정보가 복사되지 않는 것을 막을 수 있는 것이 뭔지는 잘 모르겠네요.

완전한 백업 파일을 복원했나요? OP에 있는 파일은 40%에서 멈췄었거든요. 그 버전을 복원했다면 왜 물건 절반이 사라졌는지 설명이 될 수도 있겠네요.

지금은 그냥 추측하는 단계입니다. :slightly_smiling_face: 더 도움을 드리지 못해서 죄송합니다.

이런 문제가 발생해서 죄송합니다. 어떻게 이런 일이 일어났을 수 있는지 설명드리기 어렵습니다.

백업에서 일부 카테고리만 복원되는 방식을 상상할 수 없습니다. 일부 카테고리만 복원된다면, 그것은 바로 백업 파일에 그런 내용이 포함되어 있다는 뜻입니다. 아마도 오래된 백업 파일을 사용하고 계신 것 같습니다.

app.yml은 데이터와 아무런 관련이 없으며, Discourse 설정에 필요한 호스트명 등 다른 정보만 담고 있습니다. 어떤 데이터베이스든 어떤 사이트에나 복원할 수 있습니다.

Discourse를 새로 설치할 것입니다(새로운 서버 이미지를 사용) 그리고 다시 백업을 복원해 보겠습니다.

40%에서 멈추던 문제는 Discourse에서 직접 업로드할 때 발생했고, 그 이후에는 SCP를 통해 서버로 백업 파일을 복사했습니다.

네, 맞습니다. 하지만 백업 파일에도 중요한 설정들이 저장되어 있을 것이라 생각했습니다. 이제 이전 인스턴스에 어떤 플러그인이 설치되어 있었고, 그 설정들이 어떻게 되어 있었는지를 알 수 없습니다.
백업은 올해 12월 6일에 만든 것이므로 며칠 전 것입니다.