#!/usr/bin/perl use Getopt::Long; use strict; use warnings; $|=1; my $srcdir; my $destdir; my $mtime = 1; GetOptions( 'srcdir=s' => \$srcdir, 'destdir=s' => \$destdir, 'mtime|days=i' => \$mtime, ); defined $srcdir && defined $destdir or die < $mtime ) { push @too_old, $_; } else { push @files, $_; } } closedir SRCDIR; @too_old and print "(Ignoring ".scalar(@too_old)." too-old files.)\n"; @files or die "No backup candidates in $srcdir."; unless ( -d $destdir ) { warn "Destination directory $destdir does not exist; attempting to create.\n"; mkdir $destdir or die "mkdir $destdir - $!"; } print "Backing up ".scalar(@files)." files from $srcdir.\n"; for my $f ( @files ) { print "Archiving $f \n"; system qq( cd "$srcdir" ; tar -cz "$f" -f "$f.tar.gz" ); system qq( mv "$srcdir/$f.tar.gz" "$destdir" ); }