제목 php를 이용하여 서버 백업 프로그램 짜기
등록자 미랑 등록일시 2004-05-04 조회수 311 HIT
* 어디선가 복사해왔는데 어디인지 모르겠네요..
* 원래 쓰신분에게 죄송~

php를 이용하여 서버 백업 프로그램을 짜봤습니다.
부족하긴 하지만, 사용하시는데는 큰 무리는 없을 듯 싶습니다.

그럼 소스 나갑니다~>

-------

#!/usr/bin/php -q      
<?
        // 서버 백업 자동화 프로그램
        // 2002.05.24
        // made by byja3n

        
        // 함수 선언
        
        function makeCmd($dir,$name, $Sdir) {
                for ($i = 0; $i < sizeof($dir); $i++) {
                        $tempCmd[] = "tar -zcpf " . $Sdir . "/" . $name[$i] ."_" . date('Ymd') . ".tgz -C " .$dir[$i] . " ./" ;
                }
                return $tempCmd;
        }
        
        // 변수선언
        
        $aliveDataTime = 86400*5;       // 86400초는 1일 해서 5일 이전의 데이터는 삭제한다.
        $today = getdate(time()-$aliveDataTime);
        $DDay = $today[year] . sprintf("%02d", $today[mon]) . sprintf("%02d", $today[mday]);

        $Sdir = '/var/backup/' . date(Ymd); // 백업이 저장될 디렉토리                      
        $Ddir = '/var/backup/' . $DDay; // 백업이 삭제될 디렉토리
                
        // 백업을 할 곳 (배열)
        // 홈디렉토리는 데이터가 너무 크므로, 각 디렉토리 별로 저장한다.
        // 홈디렉토리에 포함되는 것들 : 홈페이지, 이메일 데이터
        $cmd = 'ls -1 /home';
        $fp = popen($cmd, 'r');
        while(!feof($fp)) {
        $buff = fgets($fp, 1024);
        
                $buff = ereg_replace("r","", trim($buff));

                if ($buff) {
                        $Tdir[] = "/home/" . $buff;
                        $TdirName[] = $buff;
                }
        }      
                        
        $Tdir[] = '/etc';
        $TdirName[] = 'etc';
        $Tdir[] = '/var/lib/mysql';
        $TdirName[] = 'mysql';

        
        // 데이터 백업 시작
        // 1. 먼저 백업 디렉토리를 생성한다.
        // 2. 데이터 백업
        // 3. 예전 백업 디렉토리 삭제.

        $CMD = "mkdir " . $Sdir;
        echo $CMD . "n";
        system($CMD);
        
        $CMD = makeCmd($Tdir, $TdirName, $Sdir);
        
        for ($i = 0; $i < sizeof($CMD); $i++) {
                echo $CMD[$i] . "n";
                system($CMD[$i]);
        }

        //예전 데이터 삭제

        $CMD = "rm -rf " . $Ddir;
        echo $CMD . "n";

        system($CMD);

        pclose($fp);
?>
-----------------------

일단 소스를 보시면 아시겠지만, /home디렉토리는 용량이 너무커서,
각 디렉토리별로 백업하게 해두었습니다.
CD 한장에 들어가게하기도 하고, 각각 따로 뽑아 쓸데도 편하거든요. =)

$Tdir[] 배열은 백업 받아야 할 곳의 디렉토리 목록이고
$TdirName[] 배열은 백업 받을 디렉토리의 정해질 파일 이름입니다.

이 두 부분을 알맞게 정하시면
특정 디렉토리를 백업하실 수 있게 됩니다.

일단 /etc/, DB, /home 디렉토리를 백업하는 것으로 작업은 해두었습니다.

흠...버그라기는 좀 그렇고, 백업 받아야 할곳의 디렉토리 안에..
백업 데이터 저장할곳을 정해버리면 곤란하겠죠? ^^? 그런 불상사가 없길;;

한가지더.. $aliveDataTime는 백업 데이터를 몇일간 보관할 것인가에 대한것입니다.
86400은 가만 두시고.. *5 를 맘대로 조정하시길.-_-;
목록보기

        X  
31  PHP7 클래스 선언 방법  2021-11-03 49
30  PHP7 배열 선언 코드  2021-11-03 335
29  PHP 코드를 최적화하는 40가지 팁 (번역)  2009-12-23 296
28  if , else 조건문 코드 줄이기 (?:)  2009-12-23 166
27  간단한 이메일 보내기 클래스  2008-03-05 251
26  업로드 이미지 사이즈 처리  2006-05-23 191
25  첨부 이미지(스샷) 사이즈 조정  2006-05-15 134
24  SMS 발송 - 명단 입력 스크립트  2005-09-16 135
23  PHP 로 TTF 파일을 웹폰트로 만들기  2006-05-28 275
22  glob -- Find pathnames matching a pattern  2006-05-18 195
21  Thumbnail Image (GD 처리)  2006-05-15 244
20  PHP Fuction 검색 창 소스  2006-04-11 201
19  이미지 파일의 가로, 세로 픽셀 알아내기  2006-04-11 164
18  테스트용 변수 출력 소스  2006-04-06 167
17  리눅스 apache, php 에서 mssql connecting 하기  2005-06-07 347
 php를 이용하여 서버 백업 프로그램 짜기  2004-05-04 311
15  베이비 헤로스 이벤트 소스  2004-04-28 142
14  세션 생성..  2004-04-21 199
13  제로보드 view.php 분석  2004-04-07 152
12  다중 게시판 검색  2004-03-25 1172
1 2