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.