gpt4 book ai didi

php - 使用 PHP shell_exec() 导出数据库并压缩它

转载 作者:行者123 更新时间:2023-12-04 18:39:01 26 4
gpt4 key购买 nike

我创建了一条触发运行 shell_exec() 的 fn 的快速路线备份我的数据库。

mysqldump -u john -p123 db1 > /home/john/db1.04-20-21-11-28-am.sql
为了节省服务器空间,我还想压缩我的 倾倒
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
我不确定为什么即使我放了 sleep(),zip 命令也不会运行。在第一个之后,以及介于两者之间。
我做错了什么?

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);

关于php - 使用 PHP shell_exec() 导出数据库并压缩它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67182051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com