php mysqldump和zip 7z

时间:2012-06-26 19:16:03

标签: php windows-7 mysqldump

我有这行php备份我的数据库,工作就像一个魅力(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";

但我更愿意将.sql文件压缩为7zip(作为7z)

这个不行(7za.exe的路径是正确的) 相反,它会生成空的7z文件:

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

我做错了什么?

1 个答案:

答案 0 :(得分:8)

我成功使用7z来压缩mysqldump(Windows Server 2008 R2)的输出,但我使用了命令行批处理文件和自动化任务。另外,我只使用了7z.exe,而不是7za。

请注意,以下命令是从Windows命令终端执行的,即开始 - >运行 - > cmd

我为自动化任务创建了一个批处理文件,用于运行内容:

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

这将创建mysqldump的.7z文件。 [ - si]开关指定从StdIn获取输入。 &#34; nameInZip&#34;就是你想要在zip文件中出现的内容;我做了我的&#34; schemaName&#34; .sql。

注意:这假设mysqldump和7z可执行目录位于%PATH%Environment变量中。否则使用二进制文件的完整路径,例如c:\ program files \ 7-zip \ 7z.exe而不仅仅是7z.exe

然后我创建了一个自动化任务:

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

这将创建一个自动化任务,每天20:45运行您的批处理文件。注意&#34; / ru系统&#34;确保命令由SYSTEM运行的开关,无论您是否已登录,都将运行。

请参阅here以获取schtasks命令的良好参考。

希望这有帮助!