2014-04-16 6 views
2

PHPMyAdmin을 통해 관리하는 데이터베이스가 있습니다.
나는 종종 [내보내기] 탭을 사용하여 SQL 백업 파일로 내 보냅니다.
300MB 파일을 생성합니다.wget을 사용하여 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 -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" 

그것은 작동하지만 난 그냥 하나의 데이터베이스를 내보낼 때 모든 databses을 보냅니다.

내가 사용하려고 :

post_data="$token&what=sql&export_type=database&db=$DATABASE&sql_structure_or_data=structure_and_data" 

을하지만 아무것도를 다운로드하지 않습니다.

나를 도와 줄 수 있습니까?
도움 주셔서 감사합니다.

산티아고

답변

0

이것은 가능하지 않거나 어렵습니다. 가장 좋은 방법은 MySQL에서 제공하는 백업 도구를 사용하는 것입니다. (mysqldump와 유사)

1

작은 수정으로 스크립트를 사용했습니다. 당신이 원하는 경우에 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을 변경하는 이유는 그것이 비지 박스의 V1.01, egrep을 명백하게 해당 버전과 함께 작동하도록했습니다에는 "O"와 "m"옵션이 없습니다 :

여기에 전체 수정 된 스크립트입니다.

관련 문제