Gostaria de automatizar a tarefa de importar um banco de dados remoto usando o WP-CLI .
O processo atual é para ssh
o servidor e execute um export
arquivo usando o WP-CLI , copie o arquivo para um diretório local via scp
or rsync
e, em seguida, import
o arquivo através do WP-CLI. Gostaria de utilizar @alias
e remover o maior número possível de etapas aqui.
Enquanto eu gostaria de pensar que algo assim é possível:
echo "$(wp @remote db export -)" | wp @local db import -
Com um tamanho de banco de dados> 5 GB descompactado, essa parece ser uma opção mais viável:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Infelizmente, posso estar atingindo os limites do terminal ou a estrutura dessa chamada deve ser limpa, porque minha janela parece travar.
Existe outra solução onde eu possa remover scp
esse processo? Existem outros comandos que eu poderia utilizar aqui? Eu removi vários sites dos exemplos aqui, mas isso também é algo a considerar, que pode fazer parte do alias.
Idealmente, eu esperaria algo assim no futuro:
wp @local db import @remote
Exemplo de configuração atual do uso @alias
com a caixa Basic Vagrant .
~/.wp-cli/config.yml
@basic:
ssh: basic.dev/var/www/wordpress/
~/.ssh/config
Host basic.dev
HostName basic.dev
User vagrant
IdentityFile ~/sites/basic.dev/.vagrant/machines/default/virtualbox/private_key
Atualizações
Com base no @davemac , parece que esse processo pode ser facilmente simplificado para
wp db import - <<< $(wp db export -);
Agora só preciso levar em consideração as tabelas e site_url do MU-Site
wp @basic db export --tables=$(wp @basic db tables --url=http://basic.dev/site/ --format=csv) - | gzip > basic-dev-site.sql.gz
blog_id=$(wp @basic eval --url=http://basic.dev/site/ 'echo get_current_blog_id();');
prefix=$(wp @basic eval --url=http://basic.dev/site/ 'global $wpdb; echo $wpdb->prefix;')
site_url=$(wp @basic eval "echo site_url();")
Usando search-replace
- obrigado @WestonRuter
sql=$(wp search-replace $(wp eval "echo site_url();" | cut -d ":" -f2) "//new-site.com" --network --skip-columns=guid --export); printf "%s" "$sql"
WP multisite - exporte um site remoto para importação local sem arquivos:
wp @remote db export --tables=$remote_tables - | sed "s#$remote_prefix#$local_prefix#g" | sed "s#$remote_site_domain#$local_site_domain#g" | wp @local db import -
Similiar
- # 3162 - Suporte para usar o sistema de arquivos local com
wp --ssh=<host>
- Sparks - Banco de dados de Sincronização
- Migrando um site WordPress com wp-cli
- Migrando um site rapidamente com SSH e WP-CLI
- Plug-in de migração para 10up / MU
- Como utilizar o WP-CLI de dentro do WordPress, não o SSH
- Existem métodos WP-CLI para get_current_blog_id, get_blog_details ou $ wpdb-> prefixo?
fonte
Respostas:
Desde o WP-CLI 0.24.0, agora você pode usar aliases que permitem importar um banco de dados remoto com bastante facilidade.
Usando aliases, você pode executar comandos WP-CLI em outra instalação do WP-CLI. Essa instalação pode ser uma máquina remota.
Com isso em mente, eu hackeei um alias do bash que conecta vários comandos WP-CLI para puxar um banco de dados WP remoto para um site local. Nesse caso, eu tenho um arquivo wp-cli.yml local em que configurei @prod como um alias para o meu site de produção (que usa um alias SSH).
Um
pullprod
comando no site atual do WP fará o que você precisa, juntamente com o alias configurado (que também pode ser automatizado).Funciona, mas minha próxima tarefa é melhorar a forma como obtenho a variável $ production_url, pois atualmente estou retirando-a de um arquivo local.
fonte
wp @alias db export - > $localfilename.sql
. Ele fica um pouco mais complicado para Mu-Sites, mas se você quiser um URL prod, tenteproduction_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
wp db reset --yes
? Ah ... limpa todas as tabelas para que os novos arquivos tenham um banco de dados limpo.wp search-replace
também suporta um--export
arg para que possa exportar e procurar / substituir de uma só vez: wp-cli.org/commands/search-replace