System/OS
2013.04.23 13:14
[perl] 영규가 만든 스크립트.. 하하..
조회 수 10597 댓글 0
#!/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);
}
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
369 | [ios] 인앱결제 & 오토레이아웃 관련 강좌 | hooni | 2013.11.14 | 0 | |
368 | Develop | [java] 초간단 싱글톤(Singleton) 패턴 샘플 코드 | hooni | 2013.11.18 | 11593 |
367 | Develop | [php] php5.3부터는 eregi()대신 preg_match()를 사용 | hooni | 2013.11.18 | 12468 |
366 | Develop | [js] window.open() 속성 사용 방법 | hooni | 2013.11.18 | 13588 |
365 | Develop | [ios] iphone SetDeviceOrientation 화면 강제 회전 | hooni | 2013.11.20 | 18458 |
364 | Develop | [ios] iOS In App Purchase #1 (코드 구현 전 웹 설정 작업) | hooni | 2013.11.20 | 14508 |
363 | Develop | [ios] iOS In App Purchase #2 (코드 구현) | hooni | 2013.11.20 | 13766 |
362 | Develop | [ios] iOS In App Purchase 코드 부분 샘플 1 | hooni | 2013.11.20 | 11758 |
361 | Develop | [ios] iOS In App Purchase 코드 부분 샘플 2 | hooni | 2013.11.20 | 11274 |
360 | Develop | [ios] In App Purchase 개발 | hooni | 2013.11.20 | 9262 |
359 | Develop | 이어서 작업할 내용~ | hooni | 2013.11.21 | 0 |
358 | Etc | [english] 영어공부 혼자 하기, 인터넷으로 영어공부하기 추천사이트 20선 | hooni | 2013.11.25 | 9406 |