YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

PHP를 이용한 서버 백업

페이지 정보

작성자 MintState 댓글 0건 조회 10,723회 작성일 08-10-29 17:39

본문

PHP를 이용한 서버 백업

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 를 맘대로 조정하시길.-_-;

댓글목록

등록된 댓글이 없습니다.

Total 165건 6 페이지
PHP 목록
번호 제목 글쓴이 조회 날짜
40 MintState 12747 10-31
39 MintState 13517 10-31
38 MintState 11747 10-31
37 MintState 13209 10-31
36 MintState 13948 10-31
35 MintState 11764 10-31
34 MintState 11386 10-31
33 MintState 18129 10-31
32 MintState 14795 10-31
31 MintState 11989 10-31
30 MintState 13802 10-29
29 MintState 18130 10-29
28 MintState 12493 10-29
열람중 MintState 10724 10-29
26 MintState 16639 10-29
25 MintState 13671 10-29
24 MintState 15096 10-29
23 MintState 15020 10-29
22 MintState 15145 10-29
21 MintState 12473 10-29
20 MintState 11337 10-29
19 MintState 11755 10-29
18 MintState 12733 10-29
17 MintState 10826 10-29
16 MintState 10039 10-29
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™