This is the script I use for backing up a remove volume to another remote volume.
Since there is an rsync in this script, use with extreme caution.
#!/usr/bin/perl
use lib $ENV{HOME}."/perl";
use warnings;
use strict;
use diagnostics;
my $source = '/Volumes/XDrive';
my $dest = '/Volumes/Shared/XDriveCopy';
system( 'open', '-g', 'afp://wombat.synology.me/XDrive' );
system( 'open', '-g', 'afp://NAS._afpovertcp._tcp.local/Shared' );
{
alarm 20;
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
while ( ! -d $source || ! -d $dest || count_dir( $source ) < 5 || count_dir( $dest ) < 5 ) { ; }
alarm 0;
}
System( 'rsync',
'--verbose', '--itemize-changes', '--progress',
'--recursive', '--times', '--links',
'--delete',
'--modify-window=2',
'--backup', "--backup-dir=$dest/#backups",
'--exclude=#recycle', '--exclude=#backups', '--exclude=.*', '--exclude=Icon?',
"$source/", $dest
);
# , '--dry-run'
sub System {
print join( ' ', @_ ), "\n";
system( @_ );
}
sub count_dir {
my( $dir ) = @_;
my $count = 0;
opendir( DIR, $dir ) or die "cant open dir $dir $!";
foreach ( readdir( DIR ) ) {
s!.*/!!;
next if m!^\.!;
next if $_ eq "Icon\015";
$count++;
}
# print STDERR "count_dir $dir -> $count\n";
return $count;
}