Vorrei automatizzare l'attività di importazione di un database remoto utilizzando WP-CLI .
Il processo corrente è ssh
sul server ed esegui un export
file su utilizzando WP-CLI , copia il file in una directory locale tramite scp
o rsync
, quindi import
il file tramite WP-CLI. Vorrei utilizzare @alias
e rimuovere il maggior numero di passaggi possibile qui.
Mi piacerebbe pensare che qualcosa del genere sia possibile:
echo "$(wp @remote db export -)" | wp @local db import -
Con una dimensione DB> 5 GB non compressa, questa sembra un'opzione più praticabile:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Sfortunatamente potrei colpire i limiti del terminale o la struttura di questa chiamata dovrebbe essere ripulita perché la mia finestra sembra bloccarsi.
C'è un'altra soluzione in cui posso rimuovere scp
da questo processo? Ci sono altri comandi che potrei utilizzare qui? Ho rimosso più siti dagli esempi qui, ma è anche qualcosa da considerare che potrebbe far parte dell'alias.
Idealmente, spererei in qualcosa del genere in futuro:
wp @local db import @remote
Esempio di configurazione attuale dell'uso @alias
con la scatola 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
aggiornamenti
Basandosi su @davemac sembra che questo processo possa essere facilmente semplificato
wp db import - <<< $(wp db export -);
Ora ho solo bisogno di prendere in considerazione le tabelle di MU-Site e 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();")
Utilizzo search-replace
- grazie @WestonRuter
sql=$(wp search-replace $(wp eval "echo site_url();" | cut -d ":" -f2) "//new-site.com" --network --skip-columns=guid --export); printf "%s" "$sql"
Multisito WP: esporta un sito remoto per l'importazione locale senza file:
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 -
Immagine simile
- # 3162 - Supporto per l'utilizzo del filesystem locale con
wp --ssh=<host>
- Sparks - Database di sincronizzazione
- Migrare un sito WordPress con wp-cli
- Migrazione rapida di un sito con SSH e WP-CLI
- Plug-in 10up / MU-Migration
- Come utilizzare WP-CLI da WordPress, non da SSH
- Esistono metodi WP-CLI per get_current_blog_id, get_blog_details o $ wpdb-> prefisso?