#!/usr/bin/perl sub init { use Getopt::Std; %options=() ; getopt("d:n:o:",\%options); } sub program { if ( $ARGV[0] eq '-h' || $ARGV[0] eq '--help') { usage(); } $user = getlogin(); if ($user eq "") { print "Username is equal to nothing.. defaulting to default.\n"; $user = "default"; } if ( defined $options{d} ) { $dir = $options{d} ; $dirs = $dir ; foreach ( $dirs ) { s/(\/(\w|\W)*\/|)(\w|\W)*\///; } system("mkdir /backups/tars/$user"); # > /dev/null 2>&1"); system("mkdir /backups/tars/$user/$dirs"); # > /dev/null 2>&1"); } else { die "Please enter a directory to back up, or use the -h or --help switch for more information.\n"; } print "Beginning backup...\n"; system "tar -cvf backup.tar.gz $dir"; print "Finished backing up the files in $dirs.\n"; if ( defined $options{n} ) { $notify = $options{n}; print "Notifying $notify of backup..."; print "done.\n"; } else { print "Notification step being skipped...\n"; } chomp ( $date = `date +%F` ); if ( defined $options{o} ) { $filename = $options{o} ; print "Moving backup to /backups/tars/$user/$dirs/$filename-$date.tar.gz..." ; system( "mv backup.tar.gz /backups/tars/$user/$dirs/$filename-$date.tar.gz" ); } else { print "Filename not given... using default of the date.\n"; print "Moving backup to /backups/tars/$user/$dirs/$date.tar.gz..." ; system( "mv backup.tar.gz /backups/tars/$user/$dirs/$date.tar.gz" ); } print "done.\n"; } init(); program(); sub usage { print "Backer-upper\n"; print "Usage: $0 [options]\n\n"; print "Options:\n"; print "\t-d\t\tDirectory to backup.\n"; print "\t-h\t\tHelp menu.\n"; print "\t-n\t\tUser to notify.\n"; print "\t-o\t\tFilename without the extension.\n\n"; print "Example: $0 -dlogs -nroot -ohax\n"; exit; }