Importar o banco de dados remoto para localhost com WP-CLI

Importar o banco de dados remoto para localhost com WP-CLI
Photo by Riho Kroll on Unsplash

Você exporta o banco de dados remoto com phpMyAdmin ou outra ferramenta e depois executa um search & replace no arquivo .sql? Isso é perda de tempo. 🤷‍♂️

Você pode exportar o banco de dados do ambiente de produção e importa-lo para sua instalação WordPress local executando apenas um comando no seu terminal.

Pré-requisitos

  1. Você precisa apenas da biblioteca WP-CLI instalada em seu computador. Se você não tem o WP-CLI instalado, siga as instruções sobre como instalar o WP-CLI.
  2. Você precisa “contar” pro WP-CLI onde está sua instalação WordPress remota. Isso é feito através de Aliases. Você vai aprender aqui como criar um Alias pro WP-CLI.

Como criar um Alias para o WP-CLI?

  1. Acesse a pasta que contém os arquivos da sua instalação WordPress local.
  2. Crie um arquivo de configuração do WP-CLI chamado wp-cli.local.yml.
  3. Adicione um Alias para a outra instalação WordPress de onde você quer pegar o banco de dados:
@prod:
   ssh: [email protected]/var/www/html
  1. Faça as substituições necessárias no código acima:
    • Substitua USERNAME pelo nome de usuário (sysuser) que tem acesso ao servidor remoto.
    • Substitua 000.000.000.000 pelo IP do servidor remoto.
    • Substitua /var/www/html pelo caminho da pasta que contém os arquivos da instalação WordPress remota.

Como exportar o banco de dados do servidor remoto e importa-lo para localhost?

  1. Ainda dentro da pasta que contém os arquivos da sua instalação WordPress local crie um arquivo chamado get-database-from-production.sh.
  2. Adicione dentro do arquivo o seguinte código:
_local_domain=localhost.website
_remote_domain=website.me

wp @prod db export database.sql --add-drop-table --skip-plugins --skip-themes

curl -o database.sql "https://${_remote_domain}/database.sql"

wp db import database.sql --skip-optimization --reconnect
wp search-replace "${_remote_domain}" "${_local_domain}" --all-tables --skip-themes --skip-plugins --skip-packages --report-changed-only
wp search-replace "https://localhost" "http://localhost" --all-tables --skip-themes --skip-plugins --skip-packages --report-changed-only

read -p "Quer alterar a senha do seu usuário (y/n)? " _update_password

if [ "${_update_password}" = "y" ]; then
  read -p "Digite seu nome de usuário: " _username
  read -p "Digite sua nova senha: " _password

  wp user update "${_username}" --user_pass="${_password}"
fi
  1. Faça as substituições necessárias no código acima:
    • Substitua localhost.website pelo domínio que você usa para acessar seu site localmente.
    • Substitua website.me pelo domínio que você usa para acessar seu site na internet.
  2. Agora, entenda o código acima:
    • Primeiramente, é definida a variável _local_domain com o valor localhost.website.
    • Depois é definida a variável _remote_domain com o valor website.me.
    • Em seguida, o comando wp @prod db export é executado. Note que é aqui que o Alias faz seu papel. Esse comando possui um Alias e por isso será executado numa instalação WordPress remota. Ele exporta o banco de dados remoto para um arquivo chamado database.sql.
    • Após a exportação do banco, o código usa a biblioteca curl para fazer o download do arquivo database.sql.
    • Agora, uma vez que o arquivo .sql existe na sua máquina, o comando wp db import é usado para importar esse arquivo no banco de dados local (agora sem Alias).
    • Depois o código executa o comando wp search-replace e substitui o domínio remoto pelo domínio local.
    • E mais uma vez o comando wp search-replace é executado, mas para remover do banco de dados as URLs que têm https://. Se você usa sua URL local com https://, então, remova essa linha do código.
    • Por último, o terminal te pergunta se você quer alterar a senha do seu usuário. Digite y para prosseguir com a mudança. Depois digite seu nome de usuário, tecle Enter, digite a nova senha e tecle Enter novamente.
  3. Execute o código abaixo no terminal (dentro da mesma pasta que contém o arquivo get-database-from-production.sh):
sh get-database-from-production.sh
Importar o banco de dados remoto para localhost com WP-CLI
Resultado do comando

Filipe Seabra
Filipe Seabra
Full Stack Web Developer

Deixe um comentário