#! /usr/bin/perl
#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";
    }
}