1

我可以使用以下方法直接下载数据库转储:

$filename = $database . '-' . date("d-m-Y_(G_i_s)") . ".sql.gz";
$mime = "application/x-gzip";


header("Content-Type: " . $mime);
header('Content-Disposition: attachment; filename="' . $filename . '"');


$cmd = "mysqldump --opt -h $host -u $username -p$password $database";


passthru($cmd);
exit(0);

我可以使用目录中的 .tar 文件制作吗?只需生成文件并下载它,而不保存在服务器上?

我可以执行这个(并且文件是正确的):

exec('tar -czf /path/download/backup.tar.gz /path/download/');

但我不想将备份文件存储在服务器上......我想直接下载它。我试图做类似我的数据库转储示例的事情......但没有成功。

任何想法如何做到这一点?

编辑:

感谢帮助。删除 -f 是个好主意。

现在它起作用了:

$filename = 'download-' . date("d-m-Y_(G_i_s)") . ".tar.gz";
$mime = "application/x-tgz";


header("Content-Type: " . $mime);
header('Content-Disposition: attachment; filename="' . $filename . '"');
$cmd = "tar -cz " . $_SERVER['DOCUMENT_ROOT'] . "/download/";

passthru($cmd);
exit(0);
4

0 回答 0