WP-CLIを使用してリモートデータベースをローカルにインポートする最速の方法(最小の手順)


13

WP-CLIを使用してリモートデータベースをインポートするタスクを自動化したいと思います

現在のプロセスはsshサーバーに対してであり、WP-CLIexportを使用してtoファイルを実行し、またはを介してファイルをローカルディレクトリにコピーし、次にWP-CLIを介してファイルをコピーします。私はここを利用して、できるだけ多くのステップを削除したいと思います。scprsyncimport@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 -


似ている


cronジョブ経由で呼び出されるbashスクリプトをscp / rsyncファイルからリモートサーバーに書き込むことができます。次に、リモートサーバーで、バックアップジョブのフォルダーを監視するcronジョブを介して実行する別のbashスクリプトを作成し、ファイルが存在すると、リモートDBにインポートします。これは、「ホットスタンバイ」サーバーを同期させる方法に似ています。
ブラス

個人的には、cronジョブでこれを実行したくありません。これは、ミックスに別の依存関係を追加し、作業しているときにローカルとリモートを同期させようとするだけのためです。「リモート」は多くのエイリアスの1つです-ローカルと同じです。関数呼び出しを減らすもう1つの理由は、1行/コピー/貼り付け/実行するのが好きだからです。コード行;)
jgraup

ダンプを変数ではなく一時ファイルに書き込もうとしましたか?
デビッド

これは、ファイル転送を処理するためにWP-CLIの外部の機能と場所ごとのより多くの認証を必要とする、今それを行う方法です。
jgraup

@jgraupこの質問は解決されましたか?
イーサンジンクスオサリバン

回答:


6

以来WP-CLI 0.24.0あなたが今できる別名使用非常に簡単にリモートデータベースをインポートすることができます。

エイリアスを使用すると、別のWP-CLIインストールに対してWP-CLIコマンドを実行できます。そのインストールはリモートマシンである可能性があります。

これを念頭に置いて、リモートWPデータベースをローカルサイトにプルするためにいくつかのWP-CLIコマンドをチェーンするbashエイリアスをハッキングしました。この場合、ローカルのwp-cli.ymlファイルがあり、本番サイト(SSHエイリアスを使用)のエイリアスとして@prodを設定しています。

pullprod() {
    # make a backup of the current local database
    wp db export _db.sql
    wp db reset --yes
    # get current directory name, used for database and URL
    current=${PWD##*/}
    # connect to remote site and ssh the remote database down to our local directory
    wp @prod db export - > $current.sql
    echo "copying of remote database to $current directory complete."
    wp db import
    # database is now imported so we can delete it
    rm -rf $current.sql
    # get the remote site URL, remove the http:// for our search replace
    production_url=$(wp @prod eval '$full_url=get_site_url();$trimmed_url=str_replace("http://", "", $full_url); echo $trimmed_url;')
    wp search-replace "$production_url" "$current.localhost"
    echo "All done, enjoy!"
}

pullprod現在のWPサイト内のコマンドを使用すると、(うまくとして自動化することができる)の設定エイリアスを持っているように沿って、必要なものを行います。

動作しますが、次のタスクは、$ production_url変数を取得する方法を改善することです。現在はローカルファイルから取得しているためです。


これは素晴らしい。正直なところ、私は本当に探していましたwp @alias db export - > $localfilename.sql。MU-Sitesの場合は少し複雑になりますが、製品URLが必要な場合は試してくださいproduction_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
jgraup

正確には何をしwp db reset --yesますか?ああ...すべてのテーブルをクリアして、新しいファイルにクリーンなデータベースを作成します。DBリセット
jgraup

1
それをありがとう、私はあなたの製品URLテクニックを採用し、それを少し変更して本番URLからhttp://を削除しました(これにより、より包括的な検索と置換が可能になります)
davemac

1
ことにも注意してくださいwp search-replaceサポートも--export:引数を一度にすべてをエクスポートし、検索/置換することができるようにwp-cli.org/commands/search-replace
ウェストンRuter
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.