#! /usr/bin/perl use File::Copy; my $from = "/var/local/backup/from/"; my $to = "/var/local/backup/to/"; opendir (H1, $from) || die ("error: cannot read input directory"); opendir (H2, $to) || die ("error: cannot read output directory"); my @files1 = readdir (H1); my %files2 = map { $_ => 1 } readdir (H2); closedir (H1); closedir (H2); foreach $file (@files1) { if ($file != '.' && $file != '..') { my $i = 0; while ($files2{"$file.$i"}) { $i = $i + 1; } if ($i == 0 || -s "$from/$file" != -s ("$to/$file." . ($i - 1))) { copy ("$from/$file", "$to/$file.$i"); print "backup $file as $file.$i\n"; } } }