Tôi muốn tự động hóa nhiệm vụ nhập cơ sở dữ liệu từ xa bằng WP-CLI .
Quá trình hiện tại là đến ssh
máy chủ và chạy export
tệp bằng WP-CLI , sao chép tệp vào thư mục cục bộ thông qua scp
hoặc rsync
sau đó import
tệp qua WP-CLI. Tôi muốn sử dụng một @alias
và loại bỏ càng nhiều bước càng tốt ở đây.
Trong khi tôi muốn nghĩ một cái gì đó như thế này là có thể:
echo "$(wp @remote db export -)" | wp @local db import -
Với kích thước DB> 5GB không nén, đây có vẻ là một lựa chọn khả thi hơn:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Thật không may, tôi có thể gặp phải các giới hạn của thiết bị đầu cuối hoặc cấu trúc của cuộc gọi này sẽ bị xóa vì cửa sổ của tôi dường như bị treo.
Có một giải pháp khác mà tôi có thể loại bỏ scp
khỏi quá trình này? Có bất kỳ lệnh nào khác tôi có thể sử dụng ở đây? Tôi đã xóa nhiều trang web khỏi các ví dụ ở đây nhưng đó cũng là điều cần xem xét có thể là một phần của bí danh.
Lý tưởng nhất, tôi sẽ hy vọng cho một cái gì đó như thế này trong tương lai:
wp @local db import @remote
Thiết lập ví dụ hiện tại về việc sử dụng @alias
với hộp Vagrant cơ bản .
~/.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
Cập nhật
Căn cứ vào @davemac có vẻ như quá trình này có thể dễ dàng được đơn giản hóa để
wp db import - <<< $(wp db export -);
Bây giờ tôi chỉ cần tính đến các bảng của MU-Site và 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();")
Sử dụng search-replace
- cảm ơn @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 - xuất một trang web từ xa sang nhập cục bộ mà không cần tệp:
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 -
Tương tự
- # 3162 - Hỗ trợ sử dụng hệ thống tệp cục bộ với
wp --ssh=<host>
- Sparks - Đồng bộ hóa cơ sở dữ liệu
- Di chuyển trang web WordPress với wp-cli
- Di chuyển trang web nhanh chóng với SSH và WP-CLI
- Plugin 10up / MU-Migration
- Cách sử dụng WP-CLI từ bên trong WordPress, không phải SSH
- Có các phương thức WP-CLI cho tiền tố get_cien_blog_id, get_blog_details hoặc $ wpdb-> không?