Cela revient à peu près à la même chose que la réponse de Peter, mais donne à l'utilisateur la possibilité de choisir le fichier distant qu'il veut et l'endroit où il veut le sauvegarder (tout en effectuant le rsync via ssh). Remplacez USER et HOST par votre nom d'utilisateur et votre hôte respectivement.
#!/bin/bash
echo -e "Please enter the full (escaped) file path:"
read -r path
echo "Path: $path"
echo -e "Enter the destination:"
read -r dst
echo "Destination: $dst"
while \[ 1 \]
do
rsync --progress --partial --append -vz -e ssh "USER@HOST:$path" $dst
if \[ "$?" = "0" \] ; then
echo "rsync completed normally"
exit
else
echo "rsync failure. Retrying in a minute..."
sleep 60
fi
done
Les options rsync utilisées ici permettent d'afficher les statistiques de progression pendant le transfert, de sauvegarder des fichiers partiels en cas d'échec inattendu et d'ajouter des fichiers partiellement terminés lors de la reprise. L'option -v augmente la verbosité, l'option -z active la compression (bonne pour une connexion lente, mais nécessite plus de puissance de calcul aux deux extrémités), et l'option -e nous permet d'effectuer ce transfert via ssh (l'encryptage est toujours bon à prendre).
Remarque : N'utilisez ceci que si vous avez activé la connexion par clé publique avec votre ssh, sinon il vous demandera un mot de passe lorsqu'il redémarrera (tuant toute fonctionnalité du script).