Me gustaría automatizar la tarea de importar una base de datos remota mediante WP-CLI .
El proceso actual es ssh
en el servidor y ejecuta un export
para archivar utilizando WP-CLI , copie el archivo a un directorio local a través de scp
o rsync
, y luego import
el archivo a través del WP -CLI. Me gustaría utilizar un @alias
y eliminar tantos pasos como sea posible aquí.
Aunque me gustaría pensar que algo como esto es posible:
echo "$(wp @remote db export -)" | wp @local db import -
Con un tamaño de base de datos > 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 parece que mi ventana simplemente se cuelga.
¿Hay otra solución donde pueda eliminar scp
de este proceso? ¿Hay otros comandos que podría utilizar aquí? He eliminado el sitio múltiple de los ejemplos aquí, pero eso también es algo a considerar que podría ser parte del alias.
Idealmente, espero algo como esto en el futuro:
wp @local db import @remote
Ejemplo de configuración actual del uso de @alias
con cuadro de Vagrant básico .
~/.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
Se basa en @davemac , parece que este proceso podría simplificarse fácilmente a
wp db import - <<< $(wp db export -);
Ahora solo debo tener en cuenta el sitio tables 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: exporta un sitio remoto a una 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 -
Similiar
- # 3162 - Soporte para usar el sistema de archivos local con
wp --ssh=<host>
- Sparks - Syncing-Database
- Migración de un sitio de WordPress con wp-cli
- Migración de un sitio rápidamente con SSH y WP-CLI
- 10up / MU-Migration plugin
- Cómo utilizar WP-CLI desde WordPress, no SSH
- ¿Existen métodos de WP-CLI para obtener_current_blog_id, get_blog_details o $ wpdb- > prefix?