Me gustaría automatizar la tarea de importar una base de datos remota utilizando la WP-CLI .
El proceso actual es al ssh
servidor, y ejecuta un export
archivo a usando WP-CLI , copia el archivo a un directorio local a través de scp
o rsync
, y luego import
el archivo a través de WP-CLI. Me gustaría utilizar un @alias
y eliminar tantos pasos como sea posible aquí.
Si bien me gustaría pensar que algo así es posible:
echo "$(wp @remote db export -)" | wp @local db import -
Con un tamaño de DB> 5GB sin comprimir, esta parece una opción más viable:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Desafortunadamente, puedo estar llegando a los límites de la terminal o la estructura de esta llamada debería limpiarse porque mi ventana parece bloquearse.
¿Hay alguna otra solución donde pueda eliminar scp
este proceso? ¿Hay algún otro comando que pueda utilizar aquí? He eliminado varios sitios de los ejemplos aquí, pero también es algo a considerar que podría ser parte del alias.
Idealmente, esperaría algo como esto en el futuro:
wp @local db import @remote
Configuración de ejemplo actual de uso @alias
con el cuadro 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
Actualizaciones
Basándose en @davemac , parece que este proceso podría simplificarse fácilmente para
wp db import - <<< $(wp db export -);
Ahora solo necesito tener en cuenta las tablas de MU-Site y site_url
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
- gracias @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 un sitio remoto a importación local sin archivos:
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 -
Similar
- # 3162 - Soporte para usar el sistema de archivos local con
wp --ssh=<host>
- Sparks - Base de datos de sincronización
- Migrar un sitio de WordPress con wp-cli
- Migrar un sitio rápidamente con SSH y WP-CLI
- Complemento 10up / MU-Migration
- Cómo utilizar WP-CLI desde WordPress, no SSH
- ¿Existen métodos WP-CLI para get_current_blog_id, get_blog_details o $ wpdb-> prefix?