3

I have this line of php backing up my databases, work's like a charm (Windows 7):

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

But i would rather prefer to have the .sql files compressed with 7zip (as 7z)

This one will not work (path to 7za.exe is correct) Instead it generates empty 7z files:

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

What am i doing wrong?

4

1 に答える 1

13

7z を使用して mysqldump (Windows Server 2008 R2) からの出力を圧縮することに成功しましたが、代わりにコマンド ライン バッチ ファイルと自動化されたタスクを使用しました。また、7za ではなく 7z.exe を使用しました。

次のコマンドは、Windows コマンド ターミナルから実行されることに注意してください。つまり、Start->Run-> cmdです。

自動化されたタスクを実行するためのバッチ ファイルを次の内容で作成しました。

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

これにより、mysqldump の .7z ファイルが作成されます。[-si] スイッチは、StdIn から入力を受け取るように指定します。「nameInZip」は、zip ファイルに表示したいものです。「schemaName」.sqlを作成しました。

注: これは、mysqldump および 7z 実行可能ディレクトリが %PATH% 環境変数にあることを前提としています。それ以外の場合は、7z.exe の代わりに c:\program files\7-zip\7z.exe など、バイナリへのフル パスを使用します。

次に、自動化されたタスクを作成しました。

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

これにより、毎日 20:45 にバッチ ファイルを実行する自動タスクが作成されます。コマンドが SYSTEM によって実行され、ログオンしているかどうかに関係なく実行されることを保証する "/ru System" スイッチに注意してください。

schtasks コマンドのリファレンスについては、こちらを参照してください。

お役に立てれば!

于 2012-10-24T13:29:14.090 に答える