如何使用wget从phpmyadmin导出一个数据库

如何使用wget从phpmyadmin导出一个数据库,phpmyadmin,automation,wget,Phpmyadmin,Automation,Wget,我有一个通过PHPMyAdmin管理的数据库。 我经常使用[export]选项卡将其导出到sql备份文件中。 它生成一个300MB的文件 我想使这个过程更容易和自动化 在许多论坛帖子的帮助下,我编写了以下脚本: #!/bin/sh ADMIN_URL='http://pma.example.net' USERNAME='xxxxx' PASSWORD='xxxxx' DATABASE='xxxxx' COOKIEJAR='/tmp/my_cookiejar' post_data="pma_u

我有一个通过PHPMyAdmin管理的数据库。
我经常使用[export]选项卡将其导出到sql备份文件中。
它生成一个300MB的文件

我想使这个过程更容易和自动化

在许多论坛帖子的帮助下,我编写了以下脚本:

#!/bin/sh

ADMIN_URL='http://pma.example.net'
USERNAME='xxxxx'
PASSWORD='xxxxx'
DATABASE='xxxxx'
COOKIEJAR='/tmp/my_cookiejar'

post_data="pma_username=$USERNAME&pma_password=$PASSWORD"

token=$(
    wget -qO- \
         --keep-session-cookies \
         --post-data "$post_data" \
         --save-cookies "$COOKIEJAR" \
         "$ADMIN_URL/" \
    | egrep -om1 'token=[[:xdigit:]]+'
)

post_data="$token&what=sql&export_type=server&sql_structure_or_data=structure_and_data"

wget -O export.sql \
     --keep-session-cookies \
     --load-cookies "$COOKIEJAR" \
     --post-data "$post_data" \
     "$ADMIN_URL/export.php"
它可以工作,但当我只想导出一个数据库时,它会导出所有数据库

我尝试使用:

post_data="$token&what=sql&export_type=database&db=$DATABASE&sql_structure_or_data=structure_and_data"
但它没有下载任何东西

你能帮我吗?
谢谢你的帮助


圣地亚哥

这可能不可能或很难做到。
最好的方法是能够使用MySQL提供的备份工具。(像mysqldump)

我使用了您的脚本,只做了一点修改。与phpMyAdmin 3.3.8.1配合正常

对于您想要的,关键是:

&db_select[0]=${DATABASE}
假设您的phpMyAdmin版本使用相同的参数名

以下是完整的修改脚本:

#!/bin/sh                                                                                     

ADMIN_URL='http://pma.example.net'
USERNAME='xxxxx'                                
PASSWORD='xxxxx'                                 
DATABASE='xxxxx'                                
COOKIEJAR='/tmp/my_cookiejar'                          

post_data="pma_username=$USERNAME&pma_password=$PASSWORD"

token=$(
    wget -qO- \
         --keep-session-cookies \
         --post-data "$post_data" \
         --save-cookies "$COOKIEJAR" \
         "$ADMIN_URL/" \              
    | egrep 'token=[[:xdigit:]]+' | head -n 1 | awk -F\' '{print $2}'
)                                                                    

post_data="$token\
&what=sql\
&export_type=server\
&asfile=sendit\
&compression=bzip\
&db_select[0]=${DATABASE}\
&sql_include_comments=something\
&sql_compatibility=NONE\
&sql_structure=something\
&sql_drop_database=something\
&sql_if_not_exists=something\
&sql_auto_increment=something\
&sql_backquotes=something\
&sql_data=something\
&sql_columns=something\
&sql_extendede=something\
&sql_max_query_size=50000\
&sql_type=INSERT\
"

wget -O ${DATABASE}_$(date +%Y-%m-%d_%H:%M).sql.bz2 \
     --keep-session-cookies \
     --load-cookies "$COOKIEJAR" \
     --post-data "$post_data" \
     "$ADMIN_URL/export.php"
对egrep进行更改的原因是使其与BusyBox v1.01一起工作,显然,egrep的版本没有“o”和“m”选项