Maneira rápida de despejar um banco de dados do Wordpress sem vasculhar os arquivos de configuração?

0

Eu tenho uma carga de sites Wordpress para se movimentar e modificar esta tarde. Yay.

Como qualquer bom desenvolvedor, eu quero fazer backup das coisas antes de sair do Hulk-out e quebrar tudo. Os arquivos do site são na sua maioria controlados por versão (e aqueles que não são submetidos a backup). O banco de dados é outra coisa. Existem muitos sites instalados neste servidor, então um dump central não é tão útil quanto eu gostaria. Eu quero um despejo específico do site.

Uma das coisas mais irritantes em fazer isso manualmente é escolher os detalhes de wp-config.php . Gostaria de saber se existe uma maneira mais fácil de processar esse arquivo e passar seus detalhes para mysqldump em um comando.

Enviei uma resposta enquanto escrevia a pergunta, mas não é a única maneira de fazer isso. Se alguém puder sugerir uma maneira melhor de lidar com isso, me avise. Apenas esteja ciente de que o PHP permitirá todo tipo de bobagem. Qualquer coisa usada aqui deve aceitar PHP variado, mas válido.

    
por Oli 14.05.2014 / 16:23

1 resposta

1

Bem, enquanto escrevia a pergunta, algumas ideias apareceram na minha cabeça. Este é o primeiro e parece funcionar. Em vez de tentar analisar manualmente o arquivo wp-config.php (que poderia estar em qualquer ordem), vou escolher as linhas que realmente quero e fazer o PHP fazer todo o trabalho pesado. Aqui está o que eu tenho:

eval $((echo '<?php'; awk '/^define/' wp-config.php; echo 'print "mysqldump -u".DB_USER." -p".DB_PASSWORD." ".DB_NAME." > database-".DB_NAME."-\$(date +%F).sql\n";') | php)

O que isto está realmente fazendo é fazer um falso script PHP no pipe, enviando isso para o PHP e depois usando a saída para executar. Aqui está o que temos antes do PHP processá-lo:

<?php
define('DB_NAME', 'my_lovely_database');
define('DB_USER', 'oli');
define('DB_PASSWORD', 'oli');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define ('WPLANG', '');
print "mysqldump -u".DB_USER." -p".DB_PASSWORD." ".DB_NAME." > database-".DB_NAME."-\$(date +%F).sql\n";

Quando isso é executado em php , gera uma linha assim:

mysqldump -uoli -poli my_lovely_database > database-my_lovely_database-2014-05-14.sql

E dizemos a bash para executar isso e cria um novo backup de banco de dados.

Salve isso como uma função ou alias no bash e você terá uma vida longa e feliz.

    
por Oli 14.05.2014 / 16:23