Desde luego, con Perl se puede realizar, pero es mucho más cómodo usar rsync o una combinación scp/tar, o simplemente scp en modo recursivo con la compresión activada.
Para rsync, uso algo como esto:
Using bash Syntax Highlighting
#!/bin/bash
DIR=/var/www/
rsync -avz --del -e ssh --bwlimit=1000 root@maquina.remota.com:$DIR $DIR
Coloreado en 0.007 segundos, usando
GeSHi 1.0.8.4
Estoy especificando que se use el protocolo ssh, un ancho de banda máximo, el origen, y el destino. En el servidor remoto debe estar funcionando el servidor de rsync, por supuesto.
Para scp es mucho más rápido:
Using bash Syntax Highlighting
scp -Cpr -l 1000 root@maquina.remota.com:/directorio /directorio/destino
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
La ventaja de rsync es que no bajará archivos que ya hayan sido bajados antes, por lo que se puede reanudar el comando si algún momento se para.
Y la ventaja de scp es que se puede hacer la copia entre dos servidores remotos.