UNIX, sh, ftp: перенос файлов с ftp пачкой
lftp + команда mirror, например.
Это нестандартная прога? Прав для установки сторонних утилит у меня нет.
wget-ом не пробовал?
Не все так просто - что то поставить мне полюбому не дадут - надо обойтись тем что есть. У мя даже доступ к тому компу тока удаленный по ssh.
Кто такой wget? Пишет, что неизвестная команда.
P.S. UNIX совсем не знаю, живьем не видел. Учу sh находу (только то, что требуется для задачи).
У мя даже доступ к тому компу тока удаленный по ssh
гы гы
если у тебя есть ssh доступ - значит у тебя есть любой доступ
man scp
---
"Аллах не ведёт людей неверных."
А это еще нахрена?
а это чтобы с ftp не парица
Учи-учи, контра плохого не посоветует
Че та пошаmanил и не понял, а как в той тулзе задать пароль на коннект?
Ключик залить, вестимо. Если, конечно, разрешено на стороне сервера.
Не разрешено - сервер не мой.
Сколько файлов?
Какой объём?
За один раз (одно соединение) сможешь всё передать?
---
"Аллах не ведёт людей неверных."
Файлов без понятия сколько будет - в районе 100 наверно. Объем - ну метров 100. Соедиение вроде по локалке, никто ничего обрубать не будет, т.е. за одно соедиение все стянуть получится.
cpio -0oH ustar < list | ssh there 'cd path && tar xf -'
Список файлов готовится примерно так:
find /path/to/files -depth -print0 > list
В самом простом случае,
tar cf - | ssh there 'tar xf -'
Если что-то произойдёт не так, тебе скажут.
---
"Аллах не ведёт людей неверных."
P.S. login/password на unix комп не совпадает с login/password на ftp.
Вообще мне кажется я немного запутал всех упоминанием ssh. Ситуация следующая:
у меня Win-машина, которая имеет доступ по ssh к unix-машине. Там я пишу скрипт, который будет выполняться на unix-машине. Этот скрипт должен сливать данные с ftp (это сторонняя машина, похоже в локалке с неизвестным ОС).
С этого надо было начинать.
> Там я пишу скрипт, который будет выполняться на unix-машине.
uname -mrs
> Этот скрипт должен сливать данные с ftp
which wget
which ncftp
which lftp
which какие-ещё бывают-приличные-ftp
ident `which ftp`
what `which ftp`
ftp --version
which curl
---
"Аллах не ведёт людей неверных."
Не разрешено - сервер не мой.c чего ты взял что не разрешено? с тем что сервер не твой это никак не связано
Вообщем я так понял, что стандартными средсвами придется реализовывать
cd $DIR_TMP
ftp ftp:// host/$DIR_FTP/* #Делает за тебя cd и get; см. man
A=`ls | awk '{print "mdelete "$0"\n"}'`
echo -e "cd $DIR_FTP\n $A\nbye" | ftp host
Пароли хранить в ~/.netrc
Либо поюзать какой-нибудь модуль perl'а (типа Net::File и вообще cpan.org )
А нельзя банально проверять на равенство результат/источник и если равно удалять? Или на тот сервер вообще только на аплоад открыт?
2
Банально - слишком большой код у меня получается, поскольку в текущий момент времени активен либо поток с ftp либо с sh командами. Конечно наверняка можно исхитриться (см. пост выше) и сделать все попроще. Просто я до этого с UNIX не работал и коротко накатать у меня не получается.
Может надо просто поставить rsync?
Не пугай человека, у него венда.
Это ещё не известно. Ты так и не сказал, что у тебя за уникс,
и что умеет твой ftp-клиент. Может быть, не всё так печально.
---
"Аллах не ведёт людей неверных."
Оставить комментарий
0000
Надо организовать remove, т. е. перенести файлы с ftp на unix-сервер. Сейчас делаю такНо что то мне кажется это не совсем надежно, в том смысле, что если mget что то не перенесет, то эти файлы будут безнадежно утеряны.
Вопрос - как сделать понадежнее?
Есть еще вариант - выполнить ls на ftp, распарсить .lst фаил, сформировать на его основе ftp-скрипт (содержащий для каждого файла набор команд get, "if exists", delete) и выполнить скрипт на ftp - но что то это много кода, кажется можно проще.