Я хотел бы автоматизировать задачу импорта удаленной базы данных с помощью WP-CLI .
Текущий процесс выполняется ssh
на сервере и запускается export
в файл с использованием WP-CLI , копирует файл в локальный каталог через scp
или rsync
, а затем import
в файл через WP-CLI. Я хотел бы использовать @alias
и удалить как можно больше шагов здесь.
Хотя хотелось бы подумать, что-то вроде этого возможно
echo "$(wp @remote db export -)" | wp @local db import -
При несжатом размере БД> 5 ГБ это выглядит более приемлемым вариантом:
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
Обновления
Основываясь на @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 -
похож
- # 3162 - Поддержка использования локальной файловой системы с
wp --ssh=<host>
- Sparks - Синхронизация-База данных
- Миграция сайта WordPress с помощью wp-cli
- Быстрая миграция сайта с использованием SSH и WP-CLI
- Плагин 10up / MU-Migration
- Как использовать WP-CLI изнутри WordPress, а не SSH
- Существуют ли методы WP-CLI для префикса get_current_blog_id, get_blog_details или $ wpdb->?