2012-06-26 2 views
2

나는 (윈도우 7) 매력처럼, 작품의 내 데이터베이스를 백업하는 PHP의 라인을 가지고 :PHP는 mysqldump는 및 우편 7Z

$exec_str = "{$real_path}Bin\mysqldump -h {$mysql_db_host} -u {$mysql_db_user} -p{$mysql_db_pasw} {$db_name} > {$backupdir}\\{$db_name}.sql"; 

을하지만 난 오히려 (7zip과 함께 압축 된 .SQL 파일이하는 것을 선호 내가 뭘 잘못

$exec_str = "{$real_path}Bin\mysqldump -h {$mysql_db_host} -u {$mysql_db_user} -p{$mysql_db_pasw} {$db_name} | {$real_path}7za a > {$backupdir}\\{$db_name}.sql.7z"; 

: 같은 7Z)

이 하나 대신 비어 7Z 파일을 생성) 올바른 7za.exe하는 (경로입니다 작동하지 않습니다?

+1

터미널에서 명령을 실행하여 배관 및 구문을 모두 올바르게 시험 했습니까? imho, 그게 문제가 될거야. 어쩌면 두 개의'exec()'를 시도 할 것인가? –

+1

7zip이 stdin에서 입력을받지 않는다는 느낌을받습니다. 많은 Windows 프로그램에서는 그렇지 않습니다. 다행스럽게도 win32 용 bzip2/gzip을 쉽게 만들 수 있습니다. –

답변

6

mysqldump (Windows Server 2008 R2)의 출력을 압축하기 위해 7z를 성공적으로 사용했지만 대신 커맨드 라인 배치 파일과 자동화 된 작업을 사용했습니다. 또한 7z.exe가 아닌 7z.exe를 사용했습니다.

을 :

참고 다음 명령은 내가 자동화 된 작업 내용을 실행하기위한 배치 파일을 생성 cmd를

Windows 명령 터미널, 즉 시작 -> 실행 ->에서 실행됩니다

mysqldump -u<mysqlUserName> -p<mysqlPassword> <schemaName>|7z.exe a -si<nameInZip> <zippedPathAndName.7z> 

이렇게하면 mysqldump의 .7z 파일이 생성됩니다. [-si] 스위치는 StdIn에서 입력을 지정합니다. "nameInZip"은 zip 파일에 표시하려는 것입니다. 내 "schemaName".sql을 만들었습니다.

참고 : 여기서는 mysqldump 및 7z 실행 가능 디렉토리가 % PATH % 환경 변수에 있다고 가정합니다. 그렇지 않으면 바이너리에 대한 전체 경로를 사용하십시오. C :이 매일 배치 파일을 실행하는 자동화 된 작업을 생성

schtasks /create /sc DAILY /tn <yourTaskName> /ru System /tr <pathToYourBatchFile> /st 20:45 

: \ 프로그램은 대신 7z.exe

의 \ 7-우편 \의 7z.exe가 그럼 난 자동화 된 작업을 생성 파일 20:45. 명령이 SYSTEM에 의해 실행되고 로그온했는지 여부에 관계없이 실행되도록 "/ ru System"스위치를 기록하십시오.

schtasks 명령에 대한 참조는 here을 참조하십시오.

희망이 도움이됩니다.