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?