Докачка с scp. со вкусом openssh.
в теме Докачка с scp. Способы решения проблемы отлично решили проблему на стороне клиента с помощью curl и поддержки curl-лом sftp/scp протокола.
Вот только я не смог научиться подать в качестве параметра curl ключ, дабы избежать интерактивности с вводом пароля или открытым текстом его давать в качестве другого параметра.
предлагаю вашему вниманию скриптик (true unixway) для докачки по ssh.
scpresume login@remote.org.ua -f /var/log/fastgrow/remote.log -t /tmp/localcopy.log
#!/bin/bash if [[ $# -lt 5 ]] then echo -e "No enouth arguments\nSyntax: $0 [login@]host -f remotefile -t localfile " >&2 ; exit 1 ; fi ; REMOTEHOST="$1" shift while getopts ":f:t:" option do case $option in f) REMOTEFILE="${OPTARG}";; t) LOCALFILE="${OPTARG}";; esac done test -f "$LOCALFILE" && SKIP=$(stat --format %s "$LOCALFILE") || (echo "No such file: $LOCALFILE" >&2 ; exit 2;) ssh $REMOTEHOST -C "tail -c +$SKIP $REMOTEFILE" >> "${LOCALFILE}" if [[ $? -ne 0 ]] then echo "some error with remote site" >&2 exit 3 fi; #CURSIZE=`stat --format %s "$LOCALFILE"` #echo "$SKIP bytes was skiped. $(( CURSIZE - SKIP )) bytes of $CURSIZE to file "$LOCALFILE" was append."
расскоментарив последние две строчки - можем посмотреть сколько байт было передано, сколько пропущено. Работает достаточно быстро:
удаленный файл порядка 300 мб (быстрорастущий лог),
десятки килобайт перекидывает меньше чем за секунду,
а 3 мегабайта - за 6 сек (из которых наверное целую секунду было потрачено непосредственно на передачу данных по сети).
из плюсов - это конечно подхыватывание опций из ~/.ssh/config и любимая всеми авторизация по ключам. а также можно встроить custom-опции в строку с ssh.
- 1697 просмотров
Страница для печати


> Вот только я не смог научиться подать в качестве параметра curl ключ, дабы избежать интерактивности с вводом пароля или открытым текстом его давать в качестве другого параметра.
обычно это запрещено для большинства программ для пущей безопасности. но если это не критично:
http://ru.wikipedia.org/wiki/Expect
вы меня не так поняли. curl-лу можно дать логин-пароль прямо в виде опций.
curl -u login:password -C - sftp://host/var/log/squid/access.log -o access.log
меня же интересует авторизация по ключам.
верно. не внимателен.
пойдет в копилку, спасибо.
в качестве идеи развития: довести до синтаксиса scp
$ scpresume host:/remote localи скачивать файл, даже если локального файла нет.
тогда можно будет совсем сделать что то типа alias scp=scpresume Ж:-)
чем rsync не угодил?
требуется установка и настройка rsync на стороне сервера. (у меня рутовых прав нет на основной куче серверов, которые администрирую)
ничего подобного
если не указывать для удаленного узла два двоеточия то автоматом ломится по ssh и работает без rsync сервера
$ rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/Хотел сперва на хабру запостить, но чо-то мне кажется меня там не поймут.
им подавай curl, а т.к. большинство там в убунте, в убунте curl он без --libssh2 и начнется головойка.
Отправить комментарий