我想使用WP-CLI. 
当前流程是ssh ,并运行export 使用文件WP-CLI, 通过将文件复制到本地目录scp 或rsync, 然后import 通过WP-CLI访问该文件。我想利用@alias 并在此处删除尽可能多的步骤。
虽然我认为这样的事情是可能的:
echo "$(wp @remote db export -)" | wp @local db import -
 如果DB大小>5GB未压缩,这似乎是一个更可行的选择:
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
当前示例设置使用
@alias 具有
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
 <小时>
Updates
基于
@davemac 看起来这个过程很容易简化为
wp db import - <<< $(wp db export -);
 现在我只需要考虑MU Site的
tables and site_urlwp @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 multisite-将远程站点导出到本地导入,无需文件:
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
 
                SO网友:davemac
                自从WP-CLI 0.24.0 你现在可以use aliases 这使您能够非常轻松地导入远程数据库。
通过使用别名,可以针对另一个WP-CLI安装运行WP-CLI命令。该安装可能是远程计算机。
考虑到这一点,我破解了一个bash别名,该别名将几个WP-CLI命令链接在一起,以将远程WP数据库拉入本地站点。在这种情况下,我有一个本地wp cli。yml文件,其中我将@prod设置为生产站点的别名(使用SSH别名)。
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!"
}
 A
pullprod 当前WP站点中的命令将执行您所需的操作,同时设置别名(也可以自动设置别名)。
它可以工作,但我的下一个任务是改进如何获取$production\\u url变量,因为目前我正在从本地文件中提取它。