php로 만든 허접한 mysql DB 별 덤프받기
기술문서/리눅스
2006/06/19 22:53
<?
$users = array('123','456','789'); // 백업할 데이터베이스명를 배열에 넣음
$users_count = sizeof($users)-1; // 유저배열의 크기를 구해옴
$backup_dir = "/blah/mysql/dump/"; // 백업파일(.sql)이 들어갈 디렉토리
$backup_tardir = "/blah/mysql/archives/"; // 1주일 단위로 백업할 .tar.gz 파일이 들어갈 디렉토리
$admin_id = "root"; // 관리자 ID
$adminpass = "blah"; // 관리자 패스워드
$backup_date = date("Ymd"); // 백업날자 구해옴
$tar_date = "Tue"; // tar.gz 로 압축할 요일 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) 기입
$cp_user = "blahuser"; // 백업 파일 복사시킬 유저명 (한 유저만 접근 가능하게 고치기 위해 필요)
$cp_user_dir = "/home/blahuser/backup"; // 외부 전송 편의를 위한 복사할 일반 유저 디렉토리
for ($i=0; $i<=$users_count; $i++) {
exec("mysqldump -u".$admin_id." -p".$adminpass." ".$users[$i]."> ".$backup_dir.$users[$i]."-".$backup_date.".sql");
}
if (date("D") == $tar_date) { // 요일이 tar.gz 로 백업할 요일과 일치할 경우
exec("cp ".$backup_dir."*".$backup_date.".sql ".$cp_user_dir);
exec("tar cvfz ".$backup_tardir.$backup_date.".tar.gz ".$backup_dir."*.sql");
// 일주일치가 백업되어 YYYYMMDD.tar.gz 형식으로 파일이 나옴
// $tar_date 가 "Mon"일 경우 지난주 화요일부터 월요일까지가 .tar.gz 에 들어감
// for 문과 위치를 바꿀 경우에는 지난주 월요일부터 일요일까지 .tar.gz 에 들어감
exec("rm -rf ".$backup_dir."*.sql"); // YYYYMMDD.tar.gz 에 들어간 sql 파일 지움
exec("cp ".$backup_tardir.$backup_date.".tar.gz ".$cp_user_dir);
}
exec("chmod 400 ".$backup_dir." -R"); // 백업 디렉토리 부터 하위까지 400 으로 바꿈
exec("chmod 400 ".$backup_tardir." -R"); // .tar.gz 파일이 들어갈 디렉토리 부터 하위까지 400 으로 바꿈
if(date("D") != $tar_date)
exec("cp ".$backup_dir."*".$backup_date.".sql ".$cp_user_dir);
exec("chown ".$cp_user." ".$cp_user_dir." -R"); // 백업파일을 정해진 유저에게 복사하고 소유권을 정해진 유저로 바꿈
exec("chmod 700 ".$cp_user_dir." -R"); // 백업파일 복사한 유저 디렉토리 하위까지 700 으로 바꿈
?>
$users = array('123','456','789'); // 백업할 데이터베이스명를 배열에 넣음
$users_count = sizeof($users)-1; // 유저배열의 크기를 구해옴
$backup_dir = "/blah/mysql/dump/"; // 백업파일(.sql)이 들어갈 디렉토리
$backup_tardir = "/blah/mysql/archives/"; // 1주일 단위로 백업할 .tar.gz 파일이 들어갈 디렉토리
$admin_id = "root"; // 관리자 ID
$adminpass = "blah"; // 관리자 패스워드
$backup_date = date("Ymd"); // 백업날자 구해옴
$tar_date = "Tue"; // tar.gz 로 압축할 요일 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) 기입
$cp_user = "blahuser"; // 백업 파일 복사시킬 유저명 (한 유저만 접근 가능하게 고치기 위해 필요)
$cp_user_dir = "/home/blahuser/backup"; // 외부 전송 편의를 위한 복사할 일반 유저 디렉토리
for ($i=0; $i<=$users_count; $i++) {
exec("mysqldump -u".$admin_id." -p".$adminpass." ".$users[$i]."> ".$backup_dir.$users[$i]."-".$backup_date.".sql");
}
if (date("D") == $tar_date) { // 요일이 tar.gz 로 백업할 요일과 일치할 경우
exec("cp ".$backup_dir."*".$backup_date.".sql ".$cp_user_dir);
exec("tar cvfz ".$backup_tardir.$backup_date.".tar.gz ".$backup_dir."*.sql");
// 일주일치가 백업되어 YYYYMMDD.tar.gz 형식으로 파일이 나옴
// $tar_date 가 "Mon"일 경우 지난주 화요일부터 월요일까지가 .tar.gz 에 들어감
// for 문과 위치를 바꿀 경우에는 지난주 월요일부터 일요일까지 .tar.gz 에 들어감
exec("rm -rf ".$backup_dir."*.sql"); // YYYYMMDD.tar.gz 에 들어간 sql 파일 지움
exec("cp ".$backup_tardir.$backup_date.".tar.gz ".$cp_user_dir);
}
exec("chmod 400 ".$backup_dir." -R"); // 백업 디렉토리 부터 하위까지 400 으로 바꿈
exec("chmod 400 ".$backup_tardir." -R"); // .tar.gz 파일이 들어갈 디렉토리 부터 하위까지 400 으로 바꿈
if(date("D") != $tar_date)
exec("cp ".$backup_dir."*".$backup_date.".sql ".$cp_user_dir);
exec("chown ".$cp_user." ".$cp_user_dir." -R"); // 백업파일을 정해진 유저에게 복사하고 소유권을 정해진 유저로 바꿈
exec("chmod 700 ".$cp_user_dir." -R"); // 백업파일 복사한 유저 디렉토리 하위까지 700 으로 바꿈
?>

