Não é possível restaurar o backup pela cli

Olá,

Estou tentando restaurar um backup e continuo recebendo este erro:

Starting restore: blackiron-2022-12-03-163112-v20221201035918.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-11-28-040817 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
EXCEPTION: /var/www/discourse/lib/discourse.rb:138:in `exec': Failed to decompress archive.

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
/var/www/discourse/lib/discourse.rb:172:in `execute_command'
/var/www/discourse/lib/discourse.rb:138:in `exec'
/var/www/discourse/lib/discourse.rb:34:in `execute_command'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:78:in `decompress_archive'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:23:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/base.rb:584:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2023-11-28-040817' directory...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

Não tenho certeza do porquê diz isso, o backup está inalterado desde que o puxei. Obrigado.

Mesmo erro na web.

Este é provavelmente o erro crítico. Você tentou verificar se o backup não está corrompido? Eu acho que isso funcionaria:

$ gunzip -c  blackiron-2022-12-03-163112-v20221201035918.tar.gz | tar -t > /dev/null
1 curtida

Mesmo problema. Não consigo fazer um novo backup porque a configuração RAID para o servidor já se foi há muito tempo, mas preciso desses dados.

image

Verificado dentro do backup. Parece ser válido.

Esta na mesma máquina em que você está restaurando o backup? É possível que o arquivo não tenha terminado de ser transferido ou tenha sido corrompido durante a transferência.

O backup está no meu PC Windows e estou usando scp:

scp blackiron-2022-12-03-163112-v20221201035918.tar.gz root@#.#.#.#:/var/discourse/shared/standalone/backups/default

A soma de verificação corresponde em ambos os arquivos? (Instruções para gerar uma soma de verificação aqui.)

1 curtida

Parece que sim. Continuarei a investigar com o WinRAR, mas se tiver alguma sugestão, agradecerei. Recebo o mesmo aviso lá também, mas consigo vê-lo no VSCode sem problemas.

Se isso ajudar, pigz mostra:

/blackiron-2022-12-03-163112-v20221201035918.tar.gz para <stdout> pigz: pulando: /blackiron-2022-12-03-163112-v20221201035918.tar.gz: corrompido -- dados de descompressão incompletos

Eu não tenho muita experiência nisso. Se você conseguir uma cópia dos arquivos, você poderá criar um novo arquivo de backup para copiar por cima.

Eu tentei escrever meu próprio script para consertar isso, o que não funcionou.

Também não sou um especialista em gzips, então não posso fazer muito. Se mais alguém souber como posso restaurá-lo com acesso total ao script SQL e aos uploads, por favor, me avise. O script SQL está bom à primeira vista e os uploads também estão.

Atualização: Consegui restaurar com sucesso uma versão mais antiga do site, de cerca de 2 meses atrás. Ainda estou tentando colocar a nova (mais recente).

Boas notícias. Encontrei uma sugestão para usar o Gzip Recovery Toolkit, o que parece promissor.

2 curtidas

Segui este guia e o movi e recebi este erro:

root@ftsweb-app:/var/www/discourse# discourse restore blackiron-2022-12-03-163112-v20221201035918.tar.gz
Starting restore: blackiron-2022-12-03-163112-v20221201035918.tar.gz
[STARTED]
'system' has started the restore!
Marking restore as running...
Making sure /var/www/discourse/tmp/restores/default/2023-11-28-060452 exists...
Copying archive to tmp directory...
EXCEPTION: /var/www/discourse/lib/discourse.rb:138:in `exec': Failed to copy archive to tmp directory.
cp: cannot open '/var/www/discourse/public/backups/default/blackiron-2022-12-03-163112-v20221201035918.tar.gz' for reading: Permission denied

Grande chance de o arquivo pertencer a outro usuário. ls -l /var/www/discourse/public/backups/default/blackiron-2022-12-03-163112-v20221201035918.tar.gz' mostraria o problema, provavelmente.

1 curtida

Diz que o root é o proprietário. Preciso torná-lo o usuário discourse?

Editar: parece que a ferramenta causou mais danos.