PHP mysqldump 받아서 다운로드 하는 방법
PHP mysqldump 받아서 다운로드 하는 방법
직접 덤프 받아서 다운로드 할 수도 있겠지만 브라우저에서 바로 덤프 받아서 다운로드 하는 방법입니다.
아래 예제는 리눅스 유저계정의 DB를 통으로 백업 받는 예제입니다.
<?
$DB_HOST = 'localhost';
$DB_USER = 'userid';
$DB_PASS = 'userpw';
$DB_NAME = 'dbname';
$BACKUP_PATH = '/home/'.$DB_USER.'/www/';
$BACKUP_NAME = 'DB_'.date("Ymd_His").'.sql.gz';
$BACKUP_FILE = $BACKUP_PATH.$BACKUP_NAME;
$DOWNLOAD_PATH = './'.$BACKUP_NAME;
$command = "mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME --opt | gzip > $BACKUP_FILE";
system($command);
if(file_exists($DOWNLOAD_PATH)) {
$filename = urlencode($BACKUP_NAME);
header("Content-Type: application/octet-stream;");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".(string)filesize($DOWNLOAD_PATH));
header("Cache-Control: cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
readfile($DOWNLOAD_PATH);
unlink($DOWNLOAD_PATH);
}
else {
echo "File not found.";
}
?>
데이터가 많은 경우에는 실행시간을 연장시켜주는 조치가 필요할 것 같네요.
set_time_limit(0);