| Category: | Utility Scripts |
| Author/Contact Info | Matthew Young mabufo@gmail.com |
| Description: | I wrote this utility to assist me in backing up files from my hard drive to an external drive. This is my first perl script! I tested this on the latest activeperl installation on windows vista. This script requires File::Copy::Recursive. If anyone has suggestions on how to improve this script either by code improvements, or feature additions post your ideas here! I would appreciate it. Sorry about the formatting. |
=head1 NAME
File autobackup utility
=head1 SYNOPSIS
autobackup -d:
The d flag backs up files to/from the locations hardcoded in
+to
the script. Only use this if you have edited in your own loc
+ations.
autobackup -h:
The h flag displays usage information. Use it for instructio
+ns.
autobackup -p FILEPATH:
The p flag should be used if you have not set up the script
+to work with the d flag.
When calling the script with the p flag, you should specifiy
+ the filepath of the files you want
to be copied as an argument: "autobackup -p C:\myfiles". You
+ will then be asked for a target
location for the files in the directory that you specified w
+hen you called the program.
I'M ASSUMING WE ALL KNOW HOW TO ENTER PROPPER FILEPATHS...
=head1 DESCRIPTION
In a nutshell, this script copies files from one location to another.
I wrote this script to transfer files from my computer to an external
+drive easily more easily.
=head1 DEPENDENCIES
This script requires the File::Copy::Recursive module.
=head1 AUTHOR
Matthew Young (mabufo@gmail.com) [www.theangrywalrus.com/blog]
=cut
#!usr/bin/perl
use strict;
use warnings;
use File::Copy::Recursive qw(dircopy);
use Getopt::Std;
use Pod::Usage;
#--------file copy vars (uncomment if you want)
#local $File::Copy::Recursive::SkipFlop = 1; #keeps the script going i
+f somethign fails
#$File::Copy::Recursive::MaxDepth #you can set this to change the maxi
+mum depth of the copy.
#I get to play with hashes a bit...
#grabs our argv values and stores them in a hash (key is the flag, val
+ue is the actual argument)
my %options=();
getopts('dp:h', \%options);
pod2usage(2) if (keys %options != 1);
if ($options{d}){
#if 'default' flag:
#paths can be changed by editing what's in qw() - on the left is l
+ocation of files,
#on the right is where you want to put them.
my ($original, $targetlocation) = qw/C:\test C:\test1/;
my ($numberoffiles, $numberofdirs, $depth) = dircopy($original, $t
+argetlocation) or die $!;
print "$numberoffiles files copied, across $numberofdirs directori
+es, at a level of depth of $depth.";
}
if ($options{p}){
#if 'path' flag:
my $original = $options{p};
print "Target directory: ";
my $targetlocation = <STDIN>;
chomp $targetlocation;
my ($numberoffiles, $numberofdirs, $depth) = dircopy($original, $t
+argetlocation) or die $!;
print "$numberoffiles files copied, across $numberofdirs directori
+es, at a level of depth of $depth.";
}
if ($options{h}){
pod2usage(2); #YES!
}
Once again I apologize for the formatting - it looks a lot better inside of eclipse :). This is my first actual script - so if you guys see any glaring errors or bad practices - point them out!
EDIT: Now with Pod::Usage!! |
|
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: File Backup Utility
by toolic (Bishop) on Jul 26, 2009 at 03:18 UTC | |
by misterMatt (Novice) on Jul 26, 2009 at 03:46 UTC | |
by misterMatt (Novice) on Jul 26, 2009 at 03:49 UTC | |
by toolic (Bishop) on Jul 26, 2009 at 12:28 UTC | |
|
Re: File Backup Utility
by graff (Chancellor) on Jul 26, 2009 at 21:12 UTC | |
by misterMatt (Novice) on Jul 27, 2009 at 00:49 UTC | |
by toolic (Bishop) on Jul 27, 2009 at 02:53 UTC |