导出数据库并使用 PHP shell_exec() 压缩它
Export Database & Zip it using PHP shell_exec()
我创建了一个快速路由来触发运行 shell_exec()
的 fn 来备份我的数据库。
mysqldump -u john -p123 db1 > /home/john/db1.04-20-21-11-28-am.sql
为了节省服务器space,我也想zip我转储
tar -czvf db1.04-20-21-11-28-am.sql.tar.gz db1.04-20-21-11-28-am.sql && rm -rf db1.04-20-21-11-28-am.sql
我不确定为什么 zip 命令永远不会运行,即使我在第一个之后和中间放置了 sleep()
。
我做错了什么?
Note : the tar command working perfectly if I copy and run it on the command line in the server.
代码
public function dbBackUp()
{
$un = env('DB_USERNAME');
$pw = env('DB_PASSWORD');
$db = env('DB_DATABASE');
$date = date('m-d-y-g-i-a');
$cmd = 'mysqldump -u ' . $un . ' -p' . $pw . ' ' . $db . ' > /home/john/' . $db . '.'.$date.'.sql';
$result = shell_exec($cmd);
sleep(2);
$cmd2 = 'tar -czvf '. $db . '.'. $date .'.sql.tar.gz '. $db .'.'.$date.'.sql && rm -rf '. $db .'.'.$date.'.sql';
$result2 = shell_exec($cmd2);
$un = env('DB_USERNAME');
$pw = env('DB_PASSWORD');
$db = env('DB_DATABASE_BABIES');
$cmd3 = 'mysqldump -u ' . $un . ' -p' . $pw . ' ' . $db . ' > /home/john/' . $db . '.'.$date.'.sql';
$result3 = shell_exec($cmd3);
sleep(2);
$cmd4 = 'tar -czvf '. $db . '.'. $date .'.sql.tar.gz '. $db .'.'.$date.'.sql && rm -rf '. $db .'.'.$date.'.sql';
$result4 = shell_exec($cmd4);
sleep(2);
$data = [];
if($result != null ){
return View::make('layouts.dbBackUp');
} else {
return $data;
}
}
我认为您在 tar 命令中遗漏了“/home/john/”部分,因此找不到该文件。
也许这会有所帮助:
//change to the directory that contains the file you want to zip
chdir('/home/john/');
$cmd2 = 'tar -czvf '. $db . '.'. $date .'.sql.tar.gz '. $db .'.'.$date.'.sql && rm -rf '. $db .'.'.$date.'.sql';
$result2 = shell_exec($cmd2);
我创建了一个快速路由来触发运行 shell_exec()
的 fn 来备份我的数据库。
mysqldump -u john -p123 db1 > /home/john/db1.04-20-21-11-28-am.sql
为了节省服务器space,我也想zip我转储
tar -czvf db1.04-20-21-11-28-am.sql.tar.gz db1.04-20-21-11-28-am.sql && rm -rf db1.04-20-21-11-28-am.sql
我不确定为什么 zip 命令永远不会运行,即使我在第一个之后和中间放置了 sleep()
。
我做错了什么?
Note : the tar command working perfectly if I copy and run it on the command line in the server.
代码
public function dbBackUp()
{
$un = env('DB_USERNAME');
$pw = env('DB_PASSWORD');
$db = env('DB_DATABASE');
$date = date('m-d-y-g-i-a');
$cmd = 'mysqldump -u ' . $un . ' -p' . $pw . ' ' . $db . ' > /home/john/' . $db . '.'.$date.'.sql';
$result = shell_exec($cmd);
sleep(2);
$cmd2 = 'tar -czvf '. $db . '.'. $date .'.sql.tar.gz '. $db .'.'.$date.'.sql && rm -rf '. $db .'.'.$date.'.sql';
$result2 = shell_exec($cmd2);
$un = env('DB_USERNAME');
$pw = env('DB_PASSWORD');
$db = env('DB_DATABASE_BABIES');
$cmd3 = 'mysqldump -u ' . $un . ' -p' . $pw . ' ' . $db . ' > /home/john/' . $db . '.'.$date.'.sql';
$result3 = shell_exec($cmd3);
sleep(2);
$cmd4 = 'tar -czvf '. $db . '.'. $date .'.sql.tar.gz '. $db .'.'.$date.'.sql && rm -rf '. $db .'.'.$date.'.sql';
$result4 = shell_exec($cmd4);
sleep(2);
$data = [];
if($result != null ){
return View::make('layouts.dbBackUp');
} else {
return $data;
}
}
我认为您在 tar 命令中遗漏了“/home/john/”部分,因此找不到该文件。
也许这会有所帮助:
//change to the directory that contains the file you want to zip
chdir('/home/john/');
$cmd2 = 'tar -czvf '. $db . '.'. $date .'.sql.tar.gz '. $db .'.'.$date.'.sql && rm -rf '. $db .'.'.$date.'.sql';
$result2 = shell_exec($cmd2);