Я хотел бы автоматизировать задачу импорта удаленной базы данных с помощью 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->?
источник
Ответы:
Начиная с WP-CLI 0.24.0 вы можете теперь использовать псевдонимы, которые позволяют довольно легко импортировать удаленную базу данных.
Используя псевдонимы, вы можете запускать команды WP-CLI для другой установки WP-CLI. Эта установка может быть удаленной машиной.
Имея это в виду, я взломал псевдоним bash, который объединяет несколько команд WP-CLI, чтобы вытащить удаленную базу данных WP на локальный сайт. В этом случае у меня есть локальный файл wp-cli.yml, в котором я установил @prod в качестве псевдонима моего рабочего сайта (который использует псевдоним SSH).
pullprod
Команда в текущем сайте WP будет делать то , что вам требуется, а также у вас есть псевдоним , установленный вверх (которые могут быть автоматизированы, а).Это работает, но моя следующая задача - улучшить способ получения переменной $ production_url, поскольку в настоящее время я извлекаю ее из локального файла.
источник
wp @alias db export - > $localfilename.sql
. Для MU-сайтов это становится немного сложнее, но если вы хотите получить URL-адрес продукта, попробуйтеproduction_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
wp db reset --yes
? Ах ... очищает все таблицы, чтобы новые файлы имели чистую базу данных. Сброс БДwp search-replace
также поддерживается--export
arg, поэтому вы можете экспортировать и искать / заменять все сразу: wp-cli.org/commands/search-replace