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
기본 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 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 -
실리아