Chciałbym zautomatyzować zadanie importowania zdalnej bazy danych za pomocą WP-CLI .
Bieżącym procesem jest przesłanie ssh
do serwera i uruchomienie export
pliku do za pomocą WP-CLI , skopiowanie pliku do lokalnego katalogu za pomocą scp
lub rsync
, a następnie import
plik za pośrednictwem WP-CLI. Chciałbym wykorzystać tutaj @alias
i usunąć jak najwięcej kroków tutaj.
Chociaż chciałbym myśleć, że coś takiego jest możliwe:
echo "$(wp @remote db export -)" | wp @local db import -
Przy nieskompresowanym rozmiarze DB> 5 GB wydaje się to bardziej opłacalną opcją:
DB_EXPORT=$(echo "$(wp @remote db export -)" | gzip | base64 -w0); echo "$DB_EXPORT" | base64 -d | gunzip | wp @local db import -
Niestety, mogę przekroczyć limit terminala lub struktura tego połączenia powinna zostać wyczyszczona, ponieważ moje okno po prostu wydaje się zawiesić.
Czy istnieje inne rozwiązanie, w którym mogę usunąć scp
ten proces? Czy są jeszcze jakieś polecenia, których mogę tutaj użyć? Usunąłem wiele witryn z podanych tutaj przykładów, ale warto też rozważyć, która z nich może być częścią aliasu.
Idealnie byłoby mieć nadzieję na coś takiego w przyszłości:
wp @local db import @remote
Bieżąca przykładowa konfiguracja korzystania @alias
z Basic Vagrant .
~/.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
Aktualizacje
Na podstawie @davemac wygląda na to, że ten proces można łatwo uprościć
wp db import - <<< $(wp db export -);
Teraz muszę tylko wziąć pod uwagę tabele MU-Site i 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();")
Korzystanie search-replace
- dzięki @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 - wyeksportuj zdalną witrynę do lokalnego importu bez plików:
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 -
Podobne
- # 3162 - Obsługa używania lokalnego systemu plików z
wp --ssh=<host>
- Sparks - Synchronizowanie bazy danych
- Migracja strony WordPress za pomocą wp-cli
- Szybka migracja strony za pomocą SSH i WP-CLI
- Wtyczka 10up / MU-Migration
- Jak korzystać z WP-CLI z poziomu WordPress, a nie SSH
- Czy istnieją metody WP-CLI dla prefiksu get_current_blog_id, get_blog_details lub $ wpdb->?
źródło
Odpowiedzi:
Od wersji WP-CLI 0.24.0 możesz teraz używać aliasów, które umożliwiają dość łatwe importowanie zdalnej bazy danych.
Za pomocą aliasów można uruchamiać komendy WP-CLI w stosunku do innej instalacji WP-CLI. Ta instalacja może być maszyną zdalną.
Mając to na uwadze, zhakowałem alias bash, który łączy kilka poleceń WP-CLI w celu wciągnięcia zdalnej bazy danych WP na lokalną stronę. W takim przypadku mam lokalny plik wp-cli.yml, w którym ustawiłem @prod jako alias mojej witryny produkcyjnej (która używa aliasu SSH).
pullprod
Komenda w obecnym miejscu WP zrobi to, czego potrzebują, a także jak masz alias skonfigurować (które mogą być zautomatyzowane, jak również).Działa, ale moim następnym zadaniem jest ulepszenie sposobu uzyskiwania zmiennej $ production_url, ponieważ obecnie pobieram ją z pliku lokalnego.
źródło
wp @alias db export - > $localfilename.sql
. To staje się trochę bardziej skomplikowane dla MU-Witryn, ale jeśli chcesz adres URL produktu, spróbujproduction_url=$(wp @prod eval "echo site_url();"); echo "The URL is $production_url";
wp db reset --yes
? Ach ... czyści wszystkie tabele, więc nowe pliki mają czystą bazę danych. Reset DBwp search-replace
obsługuje również--export
arg, dzięki czemu można eksportować i wyszukiwać / zamieniać wszystkie naraz: wp-cli.org/commands/search-replace