System/OS
2013.04.23 13:14
[perl] 영규가 만든 스크립트.. 하하..
Views 10675 Comment 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);
}
No. | Category | Subject | Author | Date | Views |
---|---|---|---|---|---|
249 | Develop | [c] SetTimer() & KillTimer() & 일회용 Timer | hooni | 2013.04.23 | 9231 |
248 | Develop | [c] selec()를 이용한 입출력 다중화 | hooni | 2013.04.23 | 8271 |
247 | Develop | [c] scanf(), printf() 포맷의 형변환 | hooni | 2003.04.23 | 10889 |
246 | Develop | [c] RSA 암호화 구현(gmp 라이브러리 활용) | hooni | 2016.10.03 | 1009 |
245 | Develop | [c] pcap을 이용한 패킷 분석 ㅎㅎ | hooni | 2003.04.23 | 10244 |
244 | Develop | [c] pcapdump 파일 분석 하는 프로그램.. ㅋㅋ | hooni | 2013.04.23 | 6913 |
243 | Develop | [c] openssl 샘플코드.. 어려움 ㅠㅠ | hooni | 2013.04.23 | 7039 |
242 | Develop | [c] OpenGL 직사각형(2D) 크기 확대/축소 | hooni | 2003.04.23 | 9093 |
241 | Develop | [c] OpenGL 임시로 여기 올림.. | hooni | 2003.04.23 | 10343 |
240 | Develop | [c] OpenGL 시어핀스키 가스킷(p.73 - 첫시간) | hooni | 2003.04.23 | 8781 |
239 | Develop | [c] OpenGL 색 입방체의 회전(입체) | hooni | 2003.04.23 | 7897 |
238 | Develop | [c] OpenGL 마우스 이벤트 | hooni | 2003.04.23 | 8753 |