Views 10597 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
#!/usr/bin/perl

#################################################################################################
##                                                                                             ##
##  제  작 : 후리자 (2003년 4월 3일) maritpe@hotmail.com                                       ##
##  파일명 : fullbackup.pl                                                                     ##
##                                                                                             ##
##  풀백업을 쉽게 하게 해준다                                                                  ##
##                                                                                             ##
#################################################################################################

  $computer = "cmd"; # 백업파일 앞에 붙는 글자
  $tgzpath = "/backup/"; # 백업한 파일을 저장할 경로 (뒤에 슬래쉬 꼭!)

  $tarfile = "/bin/tar"; # tar 파일의 경로
  $rmfile = "/bin/rm"; # rm 파일의 경로

  # 백업할 디렉토리 목록
  @backupdir = (
                [ "/home/users/js/",          "" ],
                [ "/home/users/simi/",        "" ],
                [ "/home/users/stormbr/",     "" ],
                [ "/home/users/tohlead/",     "" ],
                [ "/home/users/greesp/",      "" ],
                [ "/home/staff/hooriza/",     "--exclude=/home/staff/hooriza/storage" ],
                [ "/home/staff/lodoss/",      "" ],
                [ "/home/staff/dawnsea2/",    "" ],
                [ "/htdocs/",                 "" ],
                [ "/cmd/club/",               "--exclude=/cmd/club/storage" ]
               );

#################################################################################################

# 명령어 실행하기
sub execCommand($)
{
  my($command) = @_;

  print "명령실행 : $command\n";
  $result = `$command`;
  
  if ($result)
  {
    print "실행결과 : $result\n";
  }
}

# 파일내용 읽기
sub getFileData($)
{
  my($filename) = @_;
  $retval = `cat $filename`;
  $retval =~ s/\n//gi;
  
  return $retval;
}

# 파일내용 쓰기
sub setFileData($$)
{
  my($filename, $data) = @_;
  `echo $data > $filename`;
}

# 현재 날짜 얻기
sub getCurrentDate()
{
  $retval = `date +%Y%m%d`;
  $retval =~ s/\n//gi;

  return $retval;
}

if ($#ARGV != 0)
{
  die "오류 : 인자로 full 또는 incr 가 들어가야합니다.\n";
}

$backuptype = shift(@ARGV);

if ($backuptype ne "full" && $backuptype ne "incr")
{
  die "오류 : 인자로 full 또는 incr 가 들어가야합니다.\n";
}

$lastFBdatefile = $tgzpath.$computer."_fullbackup_lastdate"; # 마지막으로 full 백업이 된 날짜 파일
$lastIBdatefile = $tgzpath.$computer."_incrbackup_lastdate"; # 마지막으로 incr 백업이 된 날짜 파일

$today = getCurrentDate();
$lastFBdate = getFileData($lastFBdatefile); # 마지막으로 full 백업 된 날짜 얻기
$lastIBdate = getFileData($lastIBdatefile); # 마지막으로 incr 백업 된 날짜 얻기

# fullbackup 디렉토리 만들기
execCommand("mkdir ".$tgzpath."fullbackup");

# incrbackup 디렉토리 만들기
execCommand("mkdir ".$tgzpath."incrbackup");

foreach my $arrayret(@backupdir)  
{
  # 배열 값 받아오기
  $destdir = @$arrayret[0];
  $option = @$arrayret[1];
  
  # 슬래쉬를 언더바로 바꾼 대상경로
  $udestdir = $destdir;
  $udestdir =~ s/\//_/gi;

  # 기존의 백업파일 삭제하기
  if ($backuptype eq "full")
  {
    if ($lastFBdate ne "")
    {
      print "기존의 압축파일을 삭제합니다\n";
      
      # 지울압축파일의 경로 설정
      $deltgzfile = $tgzpath."fullbackup/".$computer.$lastFBdate.$udestdir.".tgz";
      
      # 삭제하기
      execCommand("$rmfile -f $deltgzfile");
    }

    print "새로운 압축파일을 만듭니다\n";
  
    # 압축파일의 경로 설정
    $tgzfile = $tgzpath."fullbackup/".$computer.$today.$udestdir.".tgz";
  
    # 압축하기
    execCommand("$tarfile -czvf $tgzfile $destdir $option");
  }
  else
  {
    if ($lastFBdate > $lastIBdate) # full 백업한 이후로 incr 백업을 한번도 안 했으면
    {
      print "기존의 압축파일을 삭제합니다\n";
      
      # 지울압축파일의 경로 설정
      $deltgzfile = $tgzpath."incrbackup/".$computer."????????".$udestdir.".tgz";
      
      # 삭제하기
      execCommand("$rmfile -f $deltgzfile");
    }

    print "새로운 압축파일을 만듭니다\n";
  
    # 압축파일의 경로 설정
    $tgzfile = $tgzpath."incrbackup/".$computer.$today.$udestdir.".tgz";
  
    # 압축하기
    execCommand("$tarfile --newer '$lastIBdate' -zcf $tgzfile $destdir $option");
  }
}

if ($backuptype eq "full")
{
  # 마지막으로 full 백업 된 날짜 수정
  setFileData($lastFBdatefile, $today);
}
else
{
  # 마지막으로 incr 백업 된 날짜 수정
  setFileData($lastIBdatefile, $today);
}

?

List of Articles
No. Category Subject Author Date Views
69 Develop [android] dp, px 서로 변환 hooni 2016.10.21 3371
68 Develop [android] Canvas를 이용해 이미지 확대/축소 하기 hooni 2013.04.23 60739
67 Develop [android] Calling activity function from separate class hooni 2016.11.15 1153
66 Develop [android] ArrayAdapter를 이용하여 출력하기 hooni 2013.04.23 47337
65 Develop [android] ArrayAdapter 테스트 파일 ㅎㅎ hooni 2013.04.23 45239
64 Develop [android] Android N requires the IDE to be running with Java 1.8 or later 오류 hooni 2016.08.30 682
63 Develop [android] AlertDialog 메시지 창 띄우기 hooni 2015.07.09 849
62 Develop [Android] 2010년에 만들었던 세미나 자료. file hooni 2013.05.28 64661
61 Develop [Android Error] The number of method references in a .dex file cannot exceed 64K hooni 2016.11.10 752
60 Algorithm [algorithm] Greedy (탐욕 기법) hooni 2003.04.23 15108
59 PPT [ajax] 크로스 도메인(Cross Domain) 이슈 해결 방안 file hooni 2013.04.23 21937
58 Develop [ajax] 이벤트 코드 생성기 작업중.. ㅋㅋ file hooni 2013.04.23 7116
57 Develop [ajax] 샘플 코드와 한글처리에 대한 간단한 설명 hooni 2013.04.23 6842
56 Develop ZBar 라이브러리를 이용한 바코드 스캔 앱 개발하기 file hooni 2015.01.01 1628
55 Develop XML, JSON, BSON, MSGPACK 장,단점 비교 file hooni 2017.01.11 2237
54 Develop XE Core 1.8.18 본문 작성시 태그(html) 사라지는 버그 file hooni 2016.04.21 862
Board Pagination Prev 1 ... 68 69 70 71 72 74 Next
/ 74