Je voudrais automatiser la tâche d'importation d'une base de données distante à l'aide de WP-CLI .
Le processus en cours consiste à ssh
accéder au serveur et à exécuter un export
fichier à l'aide de WP-CLI , copiez le fichier dans un répertoire local via scp
ou rsync
, puis import
le fichier via WP-CLI. Je voudrais utiliser un @alias
et supprimer autant d'étapes que possible ici.
Alors que je voudrais penser que quelque chose comme ça est possible:
echo "$(wp @remote db export -)" | wp @local db import -
Avec une taille de base de données> 5 Go non compressée, cela semble être une option plus viable:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Malheureusement, je peux atteindre les limites du terminal ou la structure de cet appel doit être nettoyée car ma fenêtre semble juste se bloquer.
Existe-t-il une autre solution que je peux supprimer scp
de ce processus? Y a-t-il d'autres commandes que je pourrais utiliser ici? J'ai supprimé plusieurs sites des exemples ici, mais c'est aussi quelque chose à considérer qui pourrait faire partie de l'alias.
Idéalement, j'espère quelque chose comme ça à l'avenir:
wp @local db import @remote
Exemple de configuration actuelle d'utilisation @alias
avec la boîte 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
Mises à jour
Sur la base de @davemac, il semble que ce processus pourrait facilement être simplifié pour
wp db import - <<< $(wp db export -);
Maintenant, je dois juste prendre en compte les tables de MU-Site et 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();")
Utilisation search-replace
- merci @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 - exportez un site distant vers une importation locale sans fichiers:
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 - Prise en charge de l'utilisation du système de fichiers local avec
wp --ssh=<host>
- Sparks - Base de données de synchronisation
- Migration d'un site WordPress avec wp-cli
- Migration rapide d'un site avec SSH et WP-CLI
- Plugin 10up / MU-Migration
- Comment utiliser WP-CLI depuis WordPress, pas SSH
- Existe-t-il des méthodes WP-CLI pour le préfixe get_current_blog_id, get_blog_details ou $ wpdb->?