我想使用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变量,因为目前我正在从本地文件中提取它。