Это делает то же самое, что и ответ Питера, но дает пользователю возможность выбрать, какой удаленный файл он хочет и где он хочет сохранить (а также провести rsync через ssh). Замените USER и HOST на свое имя пользователя и хост соответственно.
#!/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
Используемые здесь параметры rsync включают статистику хода выполнения во время передачи, сохранение частичных файлов при неожиданном сбое и возможность добавления к частично заполненным файлам при возобновлении. Опция -v увеличивает многословность, опция -z включает сжатие (хорошо для медленного соединения, но требует больше ресурсов процессора на обоих концах), а опция -e позволяет нам выполнять эту передачу по ssh (шифрование всегда хорошо).
Примечание. Используйте это только в том случае, если у вас есть доступ с открытым ключом с помощью ssh, в противном случае он будет запрашивать пароль при перезапуске (уничтожая все функции скрипта).