Como migrei um site WordPress de 20GB sem acesso ao gerenciador de hospedagem

Fui procurado por uma empresa para refazer um portal de notícias, o site foi desenvolvido sob o cms WordPress, com elementor. A principal reclamação do solicitante era a demora para carregar o site, mesmo tendo um sistema de cache. Não foi necessário ir muito longe para encontrar o problema, simplesmente existiam mais de 55 plugins instalados, sem contar os inativos, WordPress desatualizado, banco com excesso de tabelas, entre outros problemas.

Instalei o WordPress na sua versão mais atual na minha máquina e comecei a trabalhar em cima do novo site, como sempre, o prazo não era dos melhores, para não precisar configurar um tema do 0, utilizei o Underscore para gerar um template inicial.

Depois de finalizado o novo layout, removido todos os plugins desnecessários e configurado a nova hospedagem, chegou a hora da migração do conteúdo.

Inicialmente pensei, vai ser moleza, já migrei site de +60GB em poucas horas, 20GB não vou nem ter trabalho, aí que me enganei. Não foi possível obter acesso ao Cpanel muito menos ao ssh do servidor. Pesquisando algumas alternativas, encontrei o plugin UpdraftPlus, resolvi fazer um teste.

Iniciei o backup do site no sábado por volta das 9h, mas infelizmente o plugin não conseguia concluir o backup, então mudei algumas configurações e tentei novamente, isso já era mais de 12h, por volta das 17h ~ 18h o backup terminou, agora precisava transferir 20GB para o novo servidor. Já se passava de 22h e mal tinha atingido 50%, não sei se era alguma limitação no servidor de saída, entrada ou se o próprio plugin restringia a velocidade por ser a versão free. Então contratei um s3 temporariamente para tentar jogar os arquivos no bucket e depois resgatar no novo servidor. Já no domingo pela manhã iniciei novamente a tentativa de migração, dessa vez para o S3, mas nada mudou, continuava lento, dois dias tentando migrar o conteúdo e sem sucesso.

No fim de semana seguinte, sábado às 8h iniciei uma nova tentativa, finalmente no início da noite, todo o conteúdo já estava no novo servidor, então iniciei a importação desses dados, depois de algumas horas, finalmente terminou, mas para a minha surpresa, faltava muito conteúdo, o plugin não conseguiu efetuar o backup total como o esperado. Nessa hora eu já estava desiludido, como dizia minha mãe, é hora de se enforcar em um pé de cebolinha, já passando das 01h, abortei a missão.

Novamente domingo, já no 4º dia de tentativa, resolvi utilizar o plugin novamente e fazer backup somente do banco de dados, em 15 minutos o backup estava feito e importado no novo servidor. Fiz o download do backup do banco para minha máquina local, 1,5GB, depois subi para o servidor com o scp e importei no mysql pelo shell . Enviando o arquivo para o servidor.

scp banco-de-dados.zip ssh servidor:/home/user/

Maravilha, o banco já estava importado com todo o conteúdo, sem erros, mas como recuperar as imagens e vídeos, e agora, José?

Até pensei em utilizar o Al-In-One WP Migration que é um dos meus favoritos, mas o limite de 512MB era um empecilho, até poderia utilizar uma versão nulled, mas pra que complicar ainda mais, né? A dor de cabeça posteriormente poderia ser maior ainda.

Depois de já ter acabado com o estoque de café do mês em 4 dias, parei para refletir, deve ter um jeito de acessar o terminal do servidor e fazer o backup desses arquivos, foi então que encontrei o plugin WPTerm, eu não sabia, mas ele iria me salvar ❤️

Com o WPTerm é possível rodar comandos como se estivesse conectado no shell do servidor, obviamente, eu não podia rodar um zip diretamente na pasta public_html, trata-se de um emulador, não estou conectado diretamente via ssh.

Então comecei fazendo backup nos arquivos.

zip -r a1.zip wp-content/uploads/ano/dia

E no servidor de destino, com acesso ssh, realizava o download e descompactação

wget https://site.com.br/wp-content/uploads/ano/dia/a1.zip

unzip a.zip

E assim fiz, pasta por pasta até chegar na última. Em menos de 2h já tinha migrado todos os vídeos, fotos e e-mails.

Por volta das 16h já estava tudo pronto para a virada definitiva, terminei algumas configurações na hospedagem, troquei o plugin de cache por um mais eficaz, configurei corretamente o cache, diferente do que muitos pensam, não basta apenas apontar o dns para o CloudFlare, é necessário configurar as regras de cache, para ter certeza que o arquivo está em cache, o CloudFlare retorna no header o status HIT, se for diferente disso, seus arquivos não estão sendo armazenados corretamente ou o cache é individual, o que não é muito interessante se o conteúdo é público.

cf-cache-status: HIT

age: Tempo em segundos que o arquivo está armazenado em cache

Print status cache Cloudflare

E foi assim, graças ao WpTerm, consegui migrar 20GB de conteúdo em pouquíssimo tempo, parece fácil, né? Mas não foi.