Ich möchte die Aufgabe des Importierens einer entfernten Datenbank mithilfe der WP-CLI automatisieren .
Der aktuelle Prozess besteht darin, ssh
auf den Server zu gehen und eine export
to-Datei mit WP-CLI auszuführen , die Datei über scp
oder in ein lokales Verzeichnis zu kopieren rsync
und dann import
die Datei über die WP-CLI. Ich möchte @alias
hier so viele Schritte wie möglich verwenden und entfernen.
Während ich gerne denken würde, dass so etwas möglich ist:
echo "$(wp @remote db export -)" | wp @local db import -
Bei einer unkomprimierten DB-Größe> 5 GB scheint dies eine praktikablere Option zu sein:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Leider stoße ich möglicherweise an die Grenzen des Terminals oder die Struktur dieses Anrufs sollte bereinigt werden, da mein Fenster nur zu hängen scheint.
Gibt es eine andere Lösung, die ich scp
aus diesem Prozess entfernen kann? Gibt es andere Befehle, die ich hier verwenden könnte? Ich habe Multi-Site aus den Beispielen hier entfernt, aber das ist auch etwas zu beachten, das Teil des Alias sein könnte.
Idealerweise würde ich in Zukunft auf so etwas hoffen:
wp @local db import @remote
Aktuelles Beispiel für die Verwendung @alias
mit der Basic Vagrant-Box .
~/.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
Aktualisierung
Basierend auf @davemac sieht es so aus, als könnte dieser Prozess leicht vereinfacht werden
wp db import - <<< $(wp db export -);
Jetzt muss ich nur noch die Tabellen und site_url von MU-Site berücksichtigen
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();")
Verwenden search-replace
- danke @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 - Exportieren Sie eine Remote-Site zum lokalen Import ohne Dateien:
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 -
Ähnlich
- # 3162 - Unterstützung für die Verwendung des lokalen Dateisystems mit
wp --ssh=<host>
- Sparks - Synchronisierungsdatenbank
- Migrieren einer WordPress-Site mit wp-cli
- Schnelle Migration einer Site mit SSH und WP-CLI
- 10up / MU-Migration Plugin
- Verwendung von WP-CLI in WordPress, nicht in SSH
- Gibt es WP-CLI-Methoden für get_current_blog_id, get_blog_details oder $ wpdb-> prefix?