不挖掘配置文件就能快速转储 Wordpress 数据库的方法?

不挖掘配置文件就能快速转储 Wordpress 数据库的方法?

今天下午我要移动和修改一大堆 Wordpress 网站。好极了。

像任何优秀的开发人员一样,我希望在变成绿巨人并破坏一切之前备份所有内容。该网站的文件大多是版本控制的(没有版本控制的文件也备份了)。数据库是另一回事。此服务器上安装了许多网站,因此中央转储并不像我希望的那样有用。我想要一个特定于网站的转储。

手动执行此操作最烦人的事情之一是从中挑选出详细信息wp-config.php。我想知道是否有更简单的方法来处理此文件并mysqldump在一个命令中传递其详细信息。


我在写问题时提交了一个答案,但这绝不是唯一的方法。如果有人能提出更好的处理方法,请告诉我。请注意,PHP 将允许各种无意义的行为。此处使用的任何东西都应该接受多种但有效的 PHP。

答案1

好吧,在写这个问题的时候,我脑子里突然冒出几个想法。这是第一个,而且似乎可行。我不会尝试手动解析 wp-config.php 文件(可能按任何顺序),而是选择我真正想要的行,让 PHP 完成所有繁重的工作。以下是我得到的:

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)

这实际上是在管道中创建一个伪造的 PHP 脚本,将其发送给 PHP,然后使用输出来执行。以下是 PHP 处理它之前的内容:

<?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";

当它在中运行时php,它会生成如下行:

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

我们告诉bash它运行它,它会创建一个新的数据库备份。

将其保存为 bash 中的函数或别名,您将过上长久而快乐的生活。

相关内容