우선 php5-cli 가 설치되어 있어야 한다. ( apt-get install php5-cli )
/etc/cron.daily/backup-database.php 파일을 만들어서 루트 실행 권한을 준다. (매일 새벽에 4~5시경
실행)
(chmod 755 backup-database.php 혹은 chmod 700
backup-database.php)그리고 아래의 코드를 넣는다.
본 스크립트는 $디렉토리/$서버이름/$DB네임/$백업파일 에 DB 백업 파일을 저장하게 된다.
60일이
지난 백업 파일은 자동으로 삭데 된다.
#!/usr/bin/php <? $serverName = 'jack'; $backupDir = '/cutty/database/'.$serverName; $mysqldump = '/usr/bin/mysqldump'; $mysqlId = 'root'; $mysqlPass = 'password'; $date = date('ymd', time()); $expire = date('ymd', strtotime('-60 days')); $dbConn = new mysqli('localhost', $mysqlId, $mysqlPass); $query = $dbConn->query('show databases'); while($row = $query->fetch_assoc()) { $databases[] = $row['Database']; if(!is_dir($backupDir.'/'.$row['Database'])) { mkdir($backupDir.'/'.$row['Database']); } exec($mysqldump.' -u '.$mysqlId.' -p'.$mysqlPass.' --single-transaction '.$row['Database'].' > '.$backupDir.'/'.$row['Database'].'/'.$date.'_'.$row['Database'].'.sql'); exec('gzip '.$backupDir.'/'.$row['Database'].'/'.$date.'_'.$row['Database'].'.sql'); @unlink($backupDir.'/'.$row['Database'].'/'.$expire.'_'.$row['Database'].'.sql.gz'); } ?>
./backup-database.php 식으로 실행하여 테스트 할 수 있다.