WP-CLIを使用してリモートデータベースをインポートするタスクを自動化したいと思います。
現在のプロセスはssh
サーバーに対してであり、WP-CLIexport
を使用してtoファイルを実行し、またはを介してファイルをローカルディレクトリにコピーし、次にWP-CLIを介してファイルをコピーします。私はここを利用して、できるだけ多くのステップを削除したいと思います。scp
rsync
import
@alias
私はこのようなことが可能だと思いたいのですが:
echo "$(wp @remote db export -)" | wp @local db import -
5 GBを超えるDBサイズが圧縮されていない場合、これはより現実的なオプションのようです。
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
残念ながら、ウィンドウがハングしているように見えるため、ターミナルの制限に達しているか、この呼び出しの構造をクリーンアップする必要があります。
scp
このプロセスから削除できる別の解決策はありますか?ここで使用できる他のコマンドはありますか?ここの例からマルチサイトを削除しましたが、これはエイリアスの一部になる可能性があることを考慮する必要もあります。
理想的には、私は将来的にこのようなものを望みます:
wp @local db import @remote
Basic Vagrantボックスで使用@alias
する現在の設定例。
~/.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
更新情報
上の拠点@davemacそれは、このプロセスを簡単に単純化することができようになります。
wp db import - <<< $(wp db export -);
ここで、MU-Siteのテーブルと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();")
使用search-replace
-ありがとう@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マルチサイト-リモートサイトをファイルなしでローカルインポートにエクスポートします。
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 -
似ている