System/OS
2013.04.23 13:14
[perl] 영규가 만든 스크립트.. 하하..
조회 수 10680 댓글 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);
}
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
70 | System/OS | [linux] apache, php, jsp 환경설정하기.. | hooni | 2003.04.23 | 15320 |
69 | System/OS | [linux] 특수문자 환경 설정(stty) | hooni | 2003.04.23 | 15353 |
68 | System/OS | [linux] 종료와 종료코드 확인(환경변수에서) | hooni | 2003.04.23 | 15626 |
67 | System/OS | [linux] 쉘스크립트 expr | hooni | 2014.03.11 | 15722 |
66 | System/OS | [router] 설정과 기본 명령어들 모음 | hooni | 2013.04.23 | 15757 |
65 | System/OS | 라우팅 경로 결정 영향 요소 ㅋㅋ | hooni | 2013.04.23 | 15949 |
64 | System/OS | [owasp] 10대 웹어플리케이션 보안 취약 | hooni | 2013.04.23 | 16002 |
63 | System/OS | [windows] 원격 데스크탑(터미널 서비스) 포트 변경 | hooni | 2013.04.23 | 16363 |
62 | System/OS | [linux] 패킷 스니퍼링 | hooni | 2003.04.23 | 16391 |
61 | System/OS | [linux] 콘솔/Xwindow 에서 PC스피커 소리 없애기 | hooni | 2003.04.23 | 16425 |
60 | System/OS | [linux] 메타(기호)문자의 의미와 사용 | hooni | 2003.04.23 | 16477 |
59 | System/OS | [linux] 네트워크 커널 설정.. | hooni | 2003.04.23 | 16558 |