Saya ingin mengotomatiskan tugas mengimpor basis data jauh menggunakan WP-CLI .
Proses saat ini adalah ke ssh
server, dan menjalankan export
file ke menggunakan WP-CLI , menyalin file ke direktori lokal melalui scp
atau rsync
, dan kemudian import
file melalui WP-CLI. Saya ingin memanfaatkan @alias
dan menghapus langkah sebanyak mungkin di sini.
Sementara saya ingin berpikir sesuatu seperti ini adalah mungkin:
echo "$(wp @remote db export -)" | wp @local db import -
Dengan ukuran DB> 5GB yang tidak terkompresi, ini sepertinya opsi yang lebih layak:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Sayangnya saya mungkin mengenai batasan terminal atau struktur panggilan ini harus dibersihkan karena jendela saya sepertinya menggantung.
Apakah ada solusi lain di mana saya dapat menghapus scp
dari proses ini? Apakah ada perintah lain yang bisa saya manfaatkan di sini? Saya telah menghapus banyak situs dari contoh di sini, tetapi itu juga sesuatu yang perlu dipertimbangkan yang bisa menjadi bagian dari alias.
Idealnya, saya berharap untuk hal seperti ini di masa depan:
wp @local db import @remote
Contoh pengaturan saat ini menggunakan @alias
dengan kotak Vagrant Dasar .
~/.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
Pembaruan
Berbasis pada @davemac sepertinya proses ini dapat dengan mudah disederhanakan
wp db import - <<< $(wp db export -);
Sekarang saya hanya perlu mempertimbangkan tabel MU-Site dan 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();")
Menggunakan search-replace
- terima kasih @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 - mengekspor situs jarak jauh ke impor lokal tanpa 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 -
Serupa
- # 3162 - Dukungan untuk menggunakan sistem file lokal dengan
wp --ssh=<host>
- Sparks - Sinkronisasi-Database
- Bermigrasi Situs WordPress Dengan wp-cli
- Bermigrasi Situs dengan Cepat dengan SSH dan WP-CLI
- Plugin 10up / MU-Migration
- Cara memanfaatkan WP-CLI dari dalam WordPress, bukan SSH
- Apakah ada metode WP-CLI untuk get_current_blog_id, get_blog_details atau awalan $ wpdb->?
sumber
Jawaban:
Karena WP-CLI 0.24.0 Anda sekarang dapat menggunakan alias yang memungkinkan Anda untuk mengimpor basis data jauh dengan cukup mudah.
Dengan menggunakan alias, Anda dapat menjalankan perintah WP-CLI terhadap instalasi WP-CLI lainnya. Instalasi itu bisa berupa mesin jarak jauh.
Dengan mengingat hal ini saya telah meretas alias bash yang menyatukan beberapa perintah WP-CLI untuk menarik basis data WP jauh ke situs lokal. Dalam hal ini, saya memiliki file wp-cli.yml lokal tempat saya telah menetapkan @prod sebagai alias ke situs produksi saya (yang menggunakan alias SSH).
Sebuah
pullprod
perintah dalam situs WP saat ini akan melakukan apa yang Anda butuhkan, bersama karena Anda memiliki alias mengatur (yang bisa otomatis juga).Ini berfungsi, tetapi tugas saya selanjutnya adalah memperbaiki cara saya mendapatkan variabel $ production_url, karena saat ini saya menariknya dari file lokal.
sumber
wp @alias db export - > $localfilename.sql
. Ini menjadi sedikit lebih rumit untuk MU-Sites, tetapi jika Anda menginginkan URL prod, cobaproduction_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
wp db reset --yes
dilakukan? Ah ... membersihkan semua tabel sehingga file baru memiliki db bersih. Reset DBwp search-replace
juga mendukung--export
arg sehingga Anda dapat mengekspor dan mencari / mengganti semuanya sekaligus: wp-cli.org/commands/search-replace