Como gerenciar e atualizar múltiplos WordPress pelo terminal com WP-CLI
Voltar para blog

Como gerenciar e atualizar múltiplos WordPress pelo terminal com WP-CLI

07/06/2026 · 3 min · WordPress

Como gerenciar e atualizar múltiplos WordPress pelo terminal com WP-CLI#

Quem cuida de vários sites em WordPress sabe o tempo perdido em manutenções manuais: abrir dezenas de abas no navegador, logar em cada painel /wp-admin, atualizar plugins um a um e torcer para nada quebrar.

Usar o WP-CLI diretamente pelo SSH elimina esse trabalho repetitivo. Com ele, você cria usuários, atualiza temas, roda backups e pesquisa strings no banco de dados em segundos.

Abaixo, reuni o passo a passo para instalar a ferramenta com segurança (com ou sem root), gerenciar credenciais sem vazar senhas nos logs e um script em Bash para atualizar todos os sites do servidor em lote.

1. Requisitos e teste do PHP CLI#

Antes de baixar o executável, confirme se o PHP de linha de comando está funcionando no seu terminal:

# Verificar a versão do PHP CLI
php --version

Se o binário não for encontrado, instale o pacote e os módulos comuns:

# Debian / Ubuntu
sudo apt-get update
sudo apt-get install php-cli php-mysql php-xml php-mbstring php-curl -y

# RHEL / Rocky Linux / AlmaLinux
sudo dnf install php-cli php-mysqlnd php-xml php-mbstring php-curl -y

2. Instalação global com permissão de root#

Para disponibilizar o comando wp para todos os usuários do servidor:

# 1. Baixar o arquivo PHAR oficial
curl -sO https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# 2. Validar integridade via hash SHA-256
curl -sLO https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.sha256 && shasum -a 256 -c wp-cli.phar.sha256

# 3. Tornar executável e mover para o PATH global
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# 4. Validar instalação
wp --info

3. Instalação local em hospedagem sem root#

Se você estiver em um plano de hospedagem compartilhada ou com usuário enjaulado:

# 1. Criar pasta bin pessoal
mkdir -p ~/bin
curl -sO https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar ~/bin/wp

# 2. Adicionar ao PATH no ~/.bashrc
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

4. O perigo de passar senhas direto no comando#

Formas seguras de definir senhas:#

# Opção 1: Definir senha interativamente via prompt (não grava no histórico)
wp user update 1 --prompt=user_pass --skip-email

# Opção 2: Deixar o WP-CLI gerar uma senha forte aleatória
wp user create admin-novo admin@seudominio.com --role=administrator

# Opção 3: Usar variável de ambiente temporária (limpa logo após o uso)
export WP_PASS="SenhaTemporaria123!"
wp user create admin-novo admin@seudominio.com --role=administrator --user_pass="$WP_PASS"
unset WP_PASS

5. Backups rápidos direto no gzip#

Antes de qualquer atualização de plugin ou tema, faça um dump do banco comprimido:

# Exportar banco direto para gzip (economiza I/O e espaço em disco)
wp db export - | gzip > backup-$(date +%Y%m%d-%H%M%S).sql.gz

# Restaurar backup comprimido
gunzip -c backup-XXXX.sql.gz | wp db import -

# Otimizar e reparar tabelas
wp db optimize
wp db repair

6. Comandos mais usados no dia a dia#

A. Atualizações e integridade do core#

# Checar o que tem de novo
wp core check-update
wp plugin list --update=available
wp theme list --update=available

# Atualizar tudo de uma vez
wp plugin update --all
wp theme update --all

# Validar se algum arquivo do WordPress foi modificado ou corrompido
wp core verify-checksums

B. Trocar domínio no banco (search & replace)#

# 1. Simular a troca antes de aplicar (dry-run)
wp search-replace 'https://site-antigo.com' 'https://site-novo.com' --all-tables --dry-run

# 2. Aplicar a troca em todas as tabelas
wp search-replace 'https://site-antigo.com' 'https://site-novo.com' --all-tables

C. Limpeza de cache#

# Limpar transients acumulados e cache de objetos
wp transient delete --all
wp cache flush

7. Configurando padrões no wp-cli.yml#

Crie um arquivo wp-cli.yml na raiz do seu site para desativar comandos perigosos e definir atalhos:

path: /var/www/site/public_html
disabled_commands:
  - db drop
  - db reset
skip-plugins:
  - akismet

8. Gerenciando redes WordPress multi-site#

# Listar subsites da rede
wp site list

# Atualizar o core e todos os plugins em toda a rede
wp core update --network
wp plugin update --all --network

9. Script em Bash para atualizar todos os sites do servidor#

Se você administra um servidor com dezenas de clientes ou projetos, este script localiza todas as pastas com wp-config.php, faz backup prévio e atualiza o core e plugins com log:

#!/usr/bin/env bash
set -euo pipefail

BASE_DIR="${1:-/home}"
LOG_FILE="/var/log/wp-update-$(date +%Y%m%d-%H%M%S).log"
BACKUP_DIR="/root/wp-backups/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"

log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"; }

SITES=$(find "$BASE_DIR" -maxdepth 5 -name wp-config.php -not -path "*/wp-content/*" 2>/dev/null)

for wpconfig in $SITES; do
    site=$(dirname "$wpconfig")
    SITE_NAME=$(basename "$(dirname "$site")")
    log "Atualizando site: $site"
    
    # 1. Backup do banco
    wp --path="$site" --no-color --skip-plugins db export "$BACKUP_DIR/${SITE_NAME}-pre-update.sql" --quiet 2>/dev/null || true
    
    # 2. Atualizar core e plugins
    wp --path="$site" --no-color core update --skip-plugins --quiet || true
    wp --path="$site" --no-color plugin update --all --quiet || true
    
    # 3. Validar integridade
    wp --path="$site" --no-color core verify-checksums --quiet || log "Alerta de checksums em $site"
done
log "Rotina de atualizacoes em lote finalizada."

Cuidados importantes em produção#

  1. Use --skip-plugins quando o site cair: Se uma atualização quebrar o site com erro fatal (500), o WP-CLI continua funcionando se você passar a flag --skip-plugins, permitindo desativar o plugin problemático pelo terminal.
  2. Pipes economizam tempo e disco: Exportar e importar bancos passando direto pelo gzip evita criar arquivos .sql gigantes temporários no disco.
  3. Verifique checksums periodicamente: O comando wp core verify-checksums é a forma mais rápida de descobrir se algum arquivo original do WordPress foi alterado por malware.
  4. Proteja as rotas administrativas: Combine o uso de WP-CLI com uma auditoria técnica de segurança no WordPress e valide as permissões de cache no servidor web com o guia de permissões no Nginx.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários