#this script is used to backup the dns files before modifiy
#also if there is any mistaken,you can restore the files
use strict;
use warnings;
use File::Copy::Recursive "dircopy";
use Switch;
#use Archive::Tar;
my $date = localtime();
my @datesplit=split(' ',$date);
my $datestring=join( '-',@datesplit);
my $srcdir = "/conf/";
my $destdir = "/opt/backup/";
my $tardir="/opt/tarbackup";
sub backup {
print "All files in $srcdir will backup to $destdir ... \n";
print "backup is successful ...\n" if dircopy($srcdir,$destdir) or die $! ;
}
sub restore {
print "All files in $destdir will restore to $srcdir ...\n";
print "restore is successful ...\n" if dircopy($destdir,$srcdir) or die $! ;
}
sub tar {
print "All files in $srcdir will be save to $srcdir ...\n";
print "tar and compress successful ...\n" unless system("/bin/tar -czvf $tardir/dnsbackup.`date '+%Y%m%d%H%M%S'`.tar.gz $srcdir");
print "DNS files are backuped in : "; system("echo \"$tardir/dnsbackup.`date '+%Y%m%d%H%M%S'`.tar.gz\"");
}
sub untar {
print "Restore the tar file : $ARGV[1] to $srcdir ...\n";
print "file restore successful ... \n " unless system("/bin/tar -zxvf $ARGV[1] -C / ");
}
sub usage{
print <<EOF;
[-b|-r|-t|-u filename|-h]
-b backup all files with no tar and compress
-r restore files that uses '-b' backup
-t tar and compress all the files
-u restore files that uses '-t' backup
-h print the help docs
EOF
}
switch ($ARGV[0]){
case "-b" {
print "$date backup start:\n";
&backup($srcdir,$destdir);
}
case "-r"{
print "$date restore start:\n";
&restore($srcdir,$destdir);
}
case "-t"{
print "$date tar files start :\n";
&tar($ARGV[1],$srcdir);
}
case "-u"{
print "$date untar files start:\n";
&untar($ARGV[1],$srcdir);
}
case "-h"{
&usage;
}
else {
print " [-b|-r|-t|-u filename|-h] \n";
}
}
















