WP-CLI를 사용하여 원격 데이터베이스를 로컬로 가져 오는 가장 빠른 방법 (최소 단계)


13

WP-CLI를 사용하여 원격 데이터베이스를 가져 오는 작업을 자동화하고 싶습니다 .

현재 과정이다 ssh서버 및 실행 export사용하여 파일을 WP-CLI를 통해 로컬 디렉토리에 파일을 복사, scp또는 rsync다음 importWP-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 -


실리아


cron 작업을 통해 scp / rsync 파일을 원격 서버로 호출하는 bash 스크립트를 작성할 수 있습니다. 그런 다음 원격 서버에서 백업 파일의 폴더를 감시하는 cron 작업을 통해 실행되는 다른 bash 스크립트를 가질 수 있으며 파일이 있으면 원격 DB로 가져옵니다. 이것은 "핫 대기"서버를 동기화 상태로 유지하는 방법과 유사합니다.
brass

개인적으로 cron 작업 에서이 작업을 수행하고 싶지 않습니다. 믹스에 다른 종속성을 추가하고 작업 할 때 원격으로 로컬로 동기화하려고 시도하는 것이 더 좋습니다. "원격"은 많은 별명 중 하나이며 로컬과 동일합니다. 함수 호출을 줄이는 또 다른 이유는 한 줄 / 복사 / 붙여 넣기 / 가기를 좋아하기 때문입니다! 코드 줄;)
jgraup

덤프를 변수 대신 임시 파일에 쓰려고 했습니까?
David

이것이 바로 파일 전송을 처리하기 위해 WP-CLI 외부의 기능과 위치 당 더 많은 인증을 요구하는 방법입니다.
jgraup

@jgraup이 질문이 해결 되었습니까?
Ethan Jinks O'Sullivan

답변:


6

이후 WP-CLI 0.24.0 당신은 지금 수 별명 사용 아주 쉽게 원격 데이터베이스를 가져 오기 할 수 있습니다.

별명을 사용하면 다른 WP-CLI 설치에 대해 WP-CLI 명령을 실행할 수 있습니다. 해당 설치는 원격 시스템 일 수 있습니다.

이를 염두에두고 원격 WP 데이터베이스를 로컬 사이트로 가져 오기 위해 여러 WP-CLI 명령을 연결하는 bash 별칭을 해킹했습니다. 이 경우 @prod를 프로덕션 사이트 (SSH 별칭 사용)의 별칭으로 설정 한 로컬 wp-cli.yml 파일이 있습니다.

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- 사이트에서는 조금 더 복잡해 지지만, prod URL을 원한다면production_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
jgraup

정확히 무엇을 wp db reset --yes합니까? 아 .. 새 테이블이 깨끗한 db를 갖도록 모든 테이블을 지 웁니다. DB 재설정
jgraup

1
감사합니다. 귀하의 prod URL 기술을 사용하여 프로덕션 URL에서 http : //를 제거하기 위해 약간 수정했습니다 (이는보다 포괄적 인 검색 및 교체를 위해)
davemac

1
또한 arg wp search-replace도 지원 --export하므로 한 번에 모두 내보내고 검색 / 교체 할 수 있습니다. wp-cli.org/commands/search-replace
Weston Ruter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.