scp с докачкой (силами curl и libssh2)

scp не поддерживает докачку файла. Таким образом, иногда, очень обидно, скачивая очередной большой файл, получать обрыв связи. Это можно решить c помощью curl:

для аплоада
curl -T filename -C - -u yourlogin sftp://example.net/~/filename 
для даунлоада
curl -o filename -C - -u yourlogin sftp://example.net/~/filename
но в fedora 9 curl говорит:
curl: (1) Protocol sftp not supported or disabled in libcurl
(актуально для федоры, и видимо редхатообразного) это значит что надо было компилиловарить curl с опцией
--with-libssh2=/path/to/libssh2 
собственно как это делается в федоре (с помощьью rpm-build): тянем curl-....src.rpm
$ wget -O /tmp/curl.src.rpm http://mirror.yandex.ru/fedora/linux/updates/9/SRPMS.newkey/curl-7.18.2-5.fc9.src.rpm
кроме компилятора типа gcc, rpmbuild и т.п., для сборки понадобится libssh2-devel ну и может всякая другая фигня с которой было сконфигурировано curl
yum -y install libssh2-devel
rpm -i /tmp/curl.src.rpm 
правим /usr/src/redhat/SPECS/curl.spec находим строку %configure и подправляем её с учетом своих требований (я например повыкидывал kerberos, ipv6, ldap, и добавил libssh2 )
%configure --without-ssl --with-nss=%{_prefix} --disable-ipv6 \ 
--with-ca-bundle=%{_sysconfdir}/pki/tls/certs/ca-bundle.crt \ 
--with-libidn \ 
--disable-ldaps --disable-static \ 
--with-libssh2=%{_prefix}
в BuildRequires поубирал зависимости при сборке от kerberos,ldap либ. и добавил libssh2-devel
BuildRequires: nss-devel >= 3.11.7-7, libssh2-devel 
запускаем сборку пакетов
rpmbuild -bb curl.spec 
при удачном положении звезд мы получим:
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/curl-7.18.2-5.fc9-root-root 
Wrote: /usr/src/redhat/RPMS/i386/curl-7.18.2-5.fc9.i386.rpm 
Wrote: /usr/src/redhat/RPMS/i386/libcurl-7.18.2-5.fc9.i386.rpm 
Wrote: /usr/src/redhat/RPMS/i386/libcurl-devel-7.18.2-5.fc9.i386.rpm 
Wrote: /usr/src/redhat/RPMS/i386/curl-debuginfo-7.18.2-5.fc9.i386.rpm 
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.54210 
+ umask 022 
+ cd /usr/src/redhat/BUILD 
+ cd curl-7.18.2 
+ rm -rf /var/tmp/curl-7.18.2-5.fc9-root-root 
+ exit 0
последний шаг он легкий самый:
rpm -Uih /usr/src/redhat/RPMS/i386/curl-7.18.2-5.fc9.i386.rpm /usr/src/redhat/RPMS/i386/libcurl-7.18.2-5.fc9.i386.rpm --replacefiles --replacepkgs
и результат:
curl -o /tmp/accesslog.day -C - -u squid sftp://squid/var/log/squid/access.log 
Enter host password for user 'squid': 
** Resuming transfer from byte position 19417871 
% Total % Received % Xferd Average Speed Time Time Time Current 
Dload Upload Total Spent Left Speed 
71 85.6M 71 61.2M 0 0 368k 0 0:03:57 0:02:50 0:01:07 371k
ЗЫ. в целях защиты этих пакетов при обновлении — надо бы занести их в красную книгу: yum-versionlock или yum-protect-packages
  • 27 января 2011, 13:57
  • Oden

Комментарии (0) Вконтакте (0) facebook ()

Комментарии (0)

RSS свернуть / развернуть

комментировать

Ваше имя
Ваш e-mail (будет скрыто и используется только для отправки ответов на ваш комментарий)
Вы — гость, и вам запрещено использовать HTML-теги.
 
Введите цифры и буквы: