g4 에서 mysql 백업 정보
g4 에서 mysql 백업본문
예전에 짱이님이 올려주신 mysql 백업인데요
g3 버변은 잘되는데 g4에서는 백업파일은 생기는데 안에 내용이 없는 빈파일만 생기더라구요
// MySqlDump & tar 압축
if($fname) {
$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
if($fname) {
$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
부분에서 쉘에서는 정상적으로 백업이 되니까요
$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
부분이 문제 인것 같은데 뭐가 문제인지를 잘 모르겠습니다.
=====아래는 전체 소스 원문 입니다.
<?
$sub_menu = "100999";
include_once("./_common.php");
$sub_menu = "100999";
include_once("./_common.php");
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.", $g4[path]);
alert("최고관리자만 접근 가능합니다.", $g4[path]);
$g4[title] = "DB Backup";
include_once("./admin.head.php");
?>
include_once("./admin.head.php");
?>
<p>
<table width='450' cellpadding=3 cellspacing=1 class=tablebg>
<form name='BackUp' method='post' action=''>
<tr class='ht content subjectbg'>
<td><b> * MySql DB BackUp</b></td>
</tr>
<tr class='ht content contentbg'>
<td><br><ul>
<?
// 그누보드 관리자 > 그누 MySql DB BackUp
// Create 20041205 by 짱이
<table width='450' cellpadding=3 cellspacing=1 class=tablebg>
<form name='BackUp' method='post' action=''>
<tr class='ht content subjectbg'>
<td><b> * MySql DB BackUp</b></td>
</tr>
<tr class='ht content contentbg'>
<td><br><ul>
<?
// 그누보드 관리자 > 그누 MySql DB BackUp
// Create 20041205 by 짱이
// Backup 디렉토리 지정
$DB_dir = "$g4[path]/data/file/DB_BackUp/";
if (!is_dir($DB_dir)) {
mkdir($DB_dir, 0701);
echo "<p>☞ 백업디렉토리 <font color=#0080C0>$DB_dir</font>을(를) 생성하였습니다.</p>";
}
$DB_dir = "$g4[path]/data/file/DB_BackUp/";
if (!is_dir($DB_dir)) {
mkdir($DB_dir, 0701);
echo "<p>☞ 백업디렉토리 <font color=#0080C0>$DB_dir</font>을(를) 생성하였습니다.</p>";
}
if($fdel) {
$fdel = $DB_dir . "/*";
`rm -f $fdel`;
}
// MySqlDump & tar 압축
if($fname) {
$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
}
// BackUp 파일 이름 지정 폼
else {
$fname = $mysql_db . "_" . date("ymd") . ".sql";
echo "
☞ <font color=#0080C0>이전 파일 삭제시 체크하세요!</font>
<input type='checkbox' name='fdel' value='1' onclick='DB_Delete(this.form)'><br>
☞ <font color=#0080C0>BackUp 파일 이름을 지정하세요!</font><br>
<input type='text' name='fname' value='$fname' size='30' class='ib'>.tgz
<input type='submit' value=' BackUp ' onclick='DB_BackUp(this.form)'>";
}
?>
</ul></td>
</tr>
<tr bgcolor=#E8F4D8>
<td><b> * File List</b> <font color=#0080C0><?=$DB_dir?></font></td>
</tr>
<tr bgcolor=#F0F8E8>
<td align=center><table border=0 width=95% cellpadding=2 cellspacing=2>
<tr class='ht content subjectbg'>
<td>Name</td><td>Size</td>
</tr>
<?
// File list, size 보이기
// $files = scandir($DB_dir); // PHP Ver.5
$op_dir = opendir($DB_dir);
while (false !== ($filename = readdir($op_dir))) {
$files[] = $filename;
}
$fcount = count($files);
for($i=2; $i <$fcount; $i++) {
$fsize = number_format(round(filesize($DB_dir . $files[$i])/1024));
echo "<tr>
<td bgcolor=#FFFFFF><a href=$DB_dir$files[$i]>$files[$i]</a></td><td bgcolor=#FFFFFF>$fsize KB</td>
</tr>";
}
?>
<tr class='ht content subjectbg'>
<td colspan=2><?=$fcount - 2?> 개의 파일이 있습니다.</td>
</tr>
</table></td>
</tr></form>
</table>
$fdel = $DB_dir . "/*";
`rm -f $fdel`;
}
// MySqlDump & tar 압축
if($fname) {
$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
}
// BackUp 파일 이름 지정 폼
else {
$fname = $mysql_db . "_" . date("ymd") . ".sql";
echo "
☞ <font color=#0080C0>이전 파일 삭제시 체크하세요!</font>
<input type='checkbox' name='fdel' value='1' onclick='DB_Delete(this.form)'><br>
☞ <font color=#0080C0>BackUp 파일 이름을 지정하세요!</font><br>
<input type='text' name='fname' value='$fname' size='30' class='ib'>.tgz
<input type='submit' value=' BackUp ' onclick='DB_BackUp(this.form)'>";
}
?>
</ul></td>
</tr>
<tr bgcolor=#E8F4D8>
<td><b> * File List</b> <font color=#0080C0><?=$DB_dir?></font></td>
</tr>
<tr bgcolor=#F0F8E8>
<td align=center><table border=0 width=95% cellpadding=2 cellspacing=2>
<tr class='ht content subjectbg'>
<td>Name</td><td>Size</td>
</tr>
<?
// File list, size 보이기
// $files = scandir($DB_dir); // PHP Ver.5
$op_dir = opendir($DB_dir);
while (false !== ($filename = readdir($op_dir))) {
$files[] = $filename;
}
$fcount = count($files);
for($i=2; $i <$fcount; $i++) {
$fsize = number_format(round(filesize($DB_dir . $files[$i])/1024));
echo "<tr>
<td bgcolor=#FFFFFF><a href=$DB_dir$files[$i]>$files[$i]</a></td><td bgcolor=#FFFFFF>$fsize KB</td>
</tr>";
}
?>
<tr class='ht content subjectbg'>
<td colspan=2><?=$fcount - 2?> 개의 파일이 있습니다.</td>
</tr>
</table></td>
</tr></form>
</table>
<script language='javascript'>
function DB_BackUp(f) {
if (f.fname.value == '') {
alert('BackUp 파일명을 입력하세요!');
f.fname.focus();
return false;
}
f.action = '<?="./_dbbackup.php"?>';
f.submit();
return;
}
function DB_Delete(f) {
if (f.fdel.checked) {
if (confirm('DB_BackUp 디렉토리의 모든 파일이 삭제됩니다.\n\n\이전 파일을 삭제하시겠습니까?')) {
f.fdel.checked = true;
}
else {
f.fdel.checked = false;
}
}
return;
}
</script>
function DB_BackUp(f) {
if (f.fname.value == '') {
alert('BackUp 파일명을 입력하세요!');
f.fname.focus();
return false;
}
f.action = '<?="./_dbbackup.php"?>';
f.submit();
return;
}
function DB_Delete(f) {
if (f.fdel.checked) {
if (confirm('DB_BackUp 디렉토리의 모든 파일이 삭제됩니다.\n\n\이전 파일을 삭제하시겠습니까?')) {
f.fdel.checked = true;
}
else {
f.fdel.checked = false;
}
}
return;
}
</script>
<?
include_once("./admin.tail.php");
?>
include_once("./admin.tail.php");
?>
댓글 전체
$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . "
=>
$cmd_1 = "mysqldump -u $mysql_user -p$mysql_pass $mysql_db > $DB_dir$fname";
=>
$cmd_1 = "mysqldump -u $mysql_user -p$mysql_pass $mysql_db > $DB_dir$fname";
관심 가져주신 rolo 님에게 감사 드립니다.
그런데 그렇게 해도 같은 현상으로 빈파일만 생성 됩니다.
그런데 그렇게 해도 같은 현상으로 빈파일만 생성 됩니다.
mysqldump가 경로에 없을 수 있습니다.
절대경로로 한번 해 보세요.
리눅스라면 대부분이 /usr/local/mysql/bin/mysqldump 정도가 될 겁니다.
$cmd_1 = "/usr/local/mysql/bin/mysqldump -u ...
절대경로로 한번 해 보세요.
리눅스라면 대부분이 /usr/local/mysql/bin/mysqldump 정도가 될 겁니다.
$cmd_1 = "/usr/local/mysql/bin/mysqldump -u ...

rolo 님 답변이 정답이었네요....^^
이 글 덕분에 저도 백업스킨 붙였습니다....
감사합니다....^^
이 글 덕분에 저도 백업스킨 붙였습니다....
감사합니다....^^
rolo 님 감사 드립니다.
g3 버젼도 있는데 거기에서는
// MySqlDump & tar 압축
if($fname) {
$cmd_1 = "mysqldump -u" . $cfg[mysql_user] . " -p" . $cfg[mysql_pass] . " " . $cfg[mysql_db] . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
}
이런식으로 되어있고 같은 서버에 g3, g4 를 같이 돌리는데 g3에서는 잘되는데 g4에서만 안되는 것이라서요.
위 방법은 역시 같은 증상으로는 안됩니다.
g3 버젼도 있는데 거기에서는
// MySqlDump & tar 압축
if($fname) {
$cmd_1 = "mysqldump -u" . $cfg[mysql_user] . " -p" . $cfg[mysql_pass] . " " . $cfg[mysql_db] . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
}
이런식으로 되어있고 같은 서버에 g3, g4 를 같이 돌리는데 g3에서는 잘되는데 g4에서만 안되는 것이라서요.
위 방법은 역시 같은 증상으로는 안됩니다.
경로의 문제군요./usr/local/mysql/bin