Ru-Board.club
← Вернуться в раздел «Программы»

» wput - аналог wget, но для закачки файлов

Автор: slech
Дата сообщения: 19.07.2008 15:45
Wput


Wput является полной противоположностью программы wget. Программа может загружать файлы на FTP-серверы с помощью простого интерфейса командной строки, похожего на интерфейс wget.

Wput is a command-line ftp-client that looks like wget but instead of downloading, uploads files or whole directories to remote ftp-servers.

Домашняя страница


тема про wget

FAQ
Как выкачать файлы по маске в Windows и Linux
Автор: pnv82
Дата сообщения: 22.08.2008 11:20
А никто не подскажет - если он не смог достучаться к ftp серверу - почему errorlevel равен 0?
Автор: pnv82
Дата сообщения: 15.09.2008 12:03
Ну а через прокси его кто-нибудь заставлял работать?
В win порте он эти полудокументированные параметры хоть использует?
Автор: Victor_VG
Дата сообщения: 27.11.2008 03:04
pnv82

Сей вопрос задай дяде Билли или дяде Стиви - "полудокументированные параметры" - сиё их идеи. А BSD порт работает как часики. Скачать - Wput 0.6.2 TLS для FreeBSD 7.
Автор: nick108
Дата сообщения: 12.02.2009 13:56
херня какая то, не могу одной командой залить сразу несколько файлов, failed, а если указать что из такого туда то да в такой то файл - ради бога, но у меня файлы динамически меняются... как?
Автор: Victor_VG
Дата сообщения: 12.02.2009 21:54
nick108

Ну, для начала повежливей, а то бог язык обкарнает за сквернословие. "Полупочтенные" слова приравниваются к мату. А для продолжения, кидаю идейку - используй скрипт с переменными параметрами. Типа батника. Он будет подставлять имя файла из входного списка, и в цикле вызывать Wput. Кстати, это обычный приём в мире UNIX.
Автор: igor_andreev
Дата сообщения: 12.02.2009 23:26
nick108
Список файлов создай и заливай

Код:
-i, --input-file=FILE read the URLs from FILE
Автор: nick108
Дата сообщения: 17.02.2009 09:45
Вот пример, есть корневой каталог, там находится wput. есть два каталога под именем 00 и 11.
у меня vbs посему пишу там
WshShell.Run "d:\test\wput.exe -d -o 01.txt -u -t -1 -w 1 -i ./00 ftp://user:password@server/хочусюда/ ", 1, true
тут же отладочник и в файл логи пишет. если wput в корневом каталоге и надо слить все из папки 00 путем ./00 или d:\test\00\ то он в папке "хочу сюда" создает еще папку 00 и там уже все её содержимое, а мне надо все и конкретного имени я не знаю, что там сторонняя прога мне зальет(отчеты). если через -i url.txt в котором прописать d:\test\00\ то ничего не меняется, всеравно зальет на сервак файлы вместе с папкой 00 ( если указать -nd то поскипает все и ничего не будет.
а если wput находится вообще в другой папке от того что надо залить на сервак то не зальет ничего, ибо посылает команды закачки "c:\fileupload\upload\" пока не укажешь конкретный файл, ибо ему надо быть на уровень выше(зальет и папку) либо в корне с те ми файлами кой заливать надо.

я пока выход нашел чтоб был в корне и заливал всю папку 00, единственно боле менее работающий вариант (

сори, ругаться больше не буду)
Автор: igor_andreev
Дата сообщения: 17.02.2009 10:05

Цитата:
если через -i url.txt в котором прописать d:\test\00\


В url.txt нужно прописывать файлы для заливки. Без корневого каталога.
То есть есть файлы:

Код:
d:\00\file01.ext
d:\00\file02.ext
d:\00\sub\file03.ext
d:\00\sub\misc\file04.ext
Автор: AltTab
Дата сообщения: 22.02.2009 08:27
Мир вам!

А подскажите-ка, пожалуйста, есть такая рутинная задачка - обновлять файлы на ftp моими, с компьютера. То есть односторонне синхронизировать - чтобы на ftp была актуальная копия моих файлов. Хочется сделать это по расписанию. Чтобы не перезаписывать большую часть не изменившихся и достаточно толстых файлов, а обновить файлы, которые были созданы или изменены по отношению к лежащим на ftp


Цитата:
wput -опции -i "d:\url.txt" ftp://user:password@server/хочусюда/
- это, наверное, не подходит, так как нужно сравнить оба списка - локальный и удаленный, чтобы вывести список файлов для заливки. Разве что получить список всех файлов в папке


Цитата:
dir X:\Откуда > d:\url.txt


И залить этот список, поигравшись с указанием параметров


Цитата:
--skip-larger
--skip-existing


Верно? Или если кто уже делал подобный скрипт, подскажите или опубликуйте, а?
Автор: igor_andreev
Дата сообщения: 22.02.2009 12:12
AltTab
Типа того

Код:
WPUT -a LOG.TXT -B -N -u -nc -t1 -i FILES.LST ftp://user:password@server/хочусюда/
Автор: dazm
Дата сообщения: 02.05.2009 14:28
А можно ли использовать wput для закачки файлов на уделенную машину, например
wput -путь-на-моём-диске -\\ай-пи-удаленной-машины\диск$\папка??
читал ман, но что-то не разобрался...
Автор: pnv82
Дата сообщения: 02.05.2009 17:15
Нет.
Для этого можно использовать банальный xcopy.
Автор: dazm
Дата сообщения: 03.05.2009 12:08

Цитата:
Нет.
Для этого можно использовать банальный xcopy.


только хотелось бы чтоб была функция докачки и шейпер скорости т.к. закачка не должна забивать весь канал
P.S. может кто в курсе какой проги, с такими функциями ?
например по подобию программы killcopy тока на отдачу файлов
Автор: Weinaum
Дата сообщения: 12.07.2009 19:21
А можно ли средствами wput удалить файлы в папке на удаленном сервере, если этих файлов нет в источнике? соответственно в списке файлов на закачку?
Автор: Victor_VG
Дата сообщения: 13.07.2009 00:27
Weinaum

Не сможешь. Воспользуйся командой UNIX rm. Только с регистром ключей будь внимательней - в UNIX командах поведение утилиты полностью зависит от пары "ключ+регистр", т. ключи -r и -R имеют разное значение. На DOS/Win/IBM OS/2 для упрощения кода команды обычно на регистр ввода не реагируют, на UNIX можно наломать дров.

команда будет элементарной: rm -f /<путь_папке>/* удалит только файлы в указанном каталоге, rm -fR /<путь_папке>/* рекурсивно удалит все файлы в указанном каталоге и подкаталогах, rm -dfR /<путь_папке>/* грохнет всю структуру каталогов вместе с симлинками и хардлинками от указанного каталога, для этого будут нужны права суперпользователя (обычно это root) на удалённой машине.

Ну вместо шаблона * (как обычно, "любой символ") можно дать команду rm для конкретного файла перенаправив на её вход вывод команды ls: rm -fiR | ls /<путь_папке> удалит всё что найдёт в каталоге с запросом подтверждения по каждому файлу.
Автор: 3aki
Дата сообщения: 25.09.2009 15:20
Подскажите как переименовать файл который только что загрузил

именно переименовать не загрузить с другим именем
Автор: osp2009
Дата сообщения: 01.10.2009 11:46
Приведите пример тега плиз как передать бинарный файл находящийся в корне C:\ в пассивном режиме. Т.К. наш ftp не принимает в активном
Автор: Victor_VG
Дата сообщения: 01.10.2009 17:02
3aki

команда mv-f на *NIX системах, или rename на WINDOWS.
Автор: 3aki
Дата сообщения: 03.10.2009 13:16
Victor_VG

как с помощью wput переименовать файл который только что был загружен на ФТП,
например у подобной консольной программы ncftpput есть -T XX и -S ХХ
суфикс и префикс когда файл грузится он имеет имя с суфиксом или префиксом
например префкс tmp_archiv.rar
или суфикс archiv.rar.tmp
Тоесть когда файл в процессе аплоада видно что он не докачан, когда файл полностью докачан он имеет ральное имя
тоесть переименовывается и не имеет суфиксов или префиксов

тоесть если организовать скрипт нужно переименовать локальный файл использовать wput потом сторонними средствами переименовать удаленный файл в нужное имя? ну или использовать ncftpput который умеет всё это делать сам.
Автор: Chitan
Дата сообщения: 13.03.2010 12:57

Цитата:
Вот пример, есть корневой каталог, там находится wput. есть два каталога под именем 00 и 11.
у меня vbs посему пишу там
WshShell.Run "d:\test\wput.exe -d -o 01.txt -u -t -1 -w 1 -i ./00 ftp://user:password@server/хочусюда/ ", 1, true
тут же отладочник и в файл логи пишет. если wput в корневом каталоге и надо слить все из папки 00 путем ./00 или d:\test\00\ то он в папке "хочу сюда" создает еще папку 00 и там уже все её содержимое, а мне надо все и конкретного имени я не знаю, что там сторонняя прога мне зальет(отчеты). если через -i url.txt в котором прописать d:\test\00\ то ничего не меняется, всеравно зальет на сервак файлы вместе с папкой 00 ( если указать -nd то поскипает все и ничего не будет.
а если wput находится вообще в другой папке от того что надо залить на сервак то не зальет ничего, ибо посылает команды закачки "c:\fileupload\upload\" пока не укажешь конкретный файл, ибо ему надо быть на уровень выше(зальет и папку) либо в корне с те ми файлами кой заливать надо.

я пока выход нашел чтоб был в корне и заливал всю папку 00, единственно боле менее работающий вариант (

сори, ругаться больше не буду)


Попробуй указать еще параметр --basename=Папка от куда заливать. Тогда wput не будет создавать папки, а зальет все без создания папок.

У меня wput лежит отдельно. заливаю файлы из одной папку на ftp вот так
wput.exe -v -u -R -nd --basename=%udir%\ %udir%\ ftp://%uname%:%upass%@host/S/
Все файлы из папки %udir% попадают в директорию /s на ftp сервере, никаких папок при этом не создается.


Автор: Victor_VG
Дата сообщения: 17.03.2010 05:23
3aki

Использовать UNIX-команды ls, cp, mv и rm они и листинг дадут, и скопируют/переименуют и лишнее удалят. Могут, коли их очень попросить, и что-то нужное грохнуть, особенно rm -fR - стра-а-ашный зверь.
Автор: zytifh
Дата сообщения: 22.04.2010 11:48
wput.exe -v --basename=C:\wput\S\ ftp://alex:parol@ftp.*******/S/
Хочу переносить файл каждый день на FTP в папку S а мне пишет:

Connecting to **.**.**.**:**... connected# --------- Welcome to Pure-FTPd [privsep] [TLS] ----------
# You are user number 5 of 50 allowed.
# Local time is now 11:26. Server port: 21.
# This is a private system - No anonymous login
# IPv6 connections are also welcome on this server.
!
==> AUTH TLS ... done (communication is now encrypted!)
Logging in as alex ... # User alex has group access to: alya-uly
Logged in!
==> CWD S failed (Can't change directory to S: No such file or directory).
==> CWD S failed (Can't change directory to S: No such file or directory).
==> MKD S
==> CWD S
==> SIZE file.rar ... failed.
==> TYPE I ... done.
Setting data protection level to private ... done.
==> PASV ... done.
connection failed.
==> PORT ... failed.
Send Failed. Waiting 10 seconds... ==> CWD ry is  failed (Can't change directory to ry is _: No such file or directory).
==> CWD B failed (Can't change directory to B: No such file or directory).
==> MKD B
==> CWD B
==> SIZE file.rar ... failed.
Setting data protection level to private ... done.
==> PASV ... done.
connection failed.
В чем проблема подскажите плиз.
Автор: mascod
Дата сообщения: 28.06.2010 18:23
Так и не победил заливку файлов по маске, вроде в манах это возможно:
"So you can specify e.g. one URL and read all filenames from a file. Or use wput *.txt ftp://host, to transfer all *.txt-files. So EXAMPLES for further examples."
Кто-нибудь делал н впуте заливку файлов по маске?
Автор: slech
Дата сообщения: 07.12.2010 15:37
mascod
Ubuntu 9.04

Цитата:

[user@admin:~$ wput *.txt ftp://192.168.0.1/
--15:33:16-- `test1.txt'
=> ftp://anonymous:xxxxx@192.168.0.1:21/test1.txt
Connecting to 192.168.0.1:21... connected!
Logging in as anonymous ... Logged in!
Length: 10

15:33:17 (test1.txt) - `270.2B/s' [10]

--15:33:17-- `test.txt'
=> ftp://anonymous:xxxxx@192.168.0.1:21/test.txt
Length: 9

15:33:17 (test.txt) - `267.8B/s' [9]

FINISHED --15:33:17--
Transfered 21 bytes in 2 files at 174.8B/s



Добавлено:
Windows 2003 Server


Цитата:

wput *.txt ftp://192.168.0.1/

Error: File `*.txt' does not exist. Don't know what to do about this URL.
Nothing done. Try `wput --help'.


вот нашёл свой вариант для Windows и файлов с маской:

Цитата:

dir /B C:\*.txt | wput -i - ftp://192.168.0.1

у меня всё сработало.


-i file
--input-file=file

    

Код:
Reads URLs and filenames from file. If there are URLs on the command-line too, these will be retrieved first, unless sorting is enabled. See also the URL-Input-Handling section. If file is &#8722;, the URLs will be read from stdin. If you want to pipe the contents of the file that shall be uploaded to stdin, this cannot be done (yet). But you can use the --input-pipe flag and read the contents a) from a named pipe -I "cat named.pipe; echo > /dev/null" or b) directly from the command, that outputs the data. (See --input-pipe) Do not do things like find | wput ftp://host/ &#8722;i &#8722;! Wput would upload all files from the current directory (since the first output of find will be ’.’) and afterwards each file again (since find postes its name to Wput. And further problematic is that Wput will upload each directory that is given by find and since find itself recurses all directories, the files would be uploaded three times (or even more often for further subdirectories). Use wput ftp://host/ to upload everything from the local directory. Or use find ! &#8722;type d | wput ftp://host/ &#8722;i &#8722; to tell find, not to output directories.
Автор: mascod
Дата сообщения: 08.12.2010 03:13
slech? Спасибо!



Добавлено:
slech? Спасибо!

Автор: Aganel
Дата сообщения: 19.12.2010 02:49
Ничего не понимаю... Несколько часов разбирался с wput, набросал скрипт, и тут выяснилось, что wput неправильно видит дату на ftp

Код:
[213] '20101219000817'
done (modified on 19.12.2010 at 0:8:17)
timestamping: local: 1292706607 seconds
remote: 1295384897 seconds; diff:
timestamping: local: Sun Dec 19 00:10:07 2010
remote: Wed Jan 19 00:08:17 2011
-- Skipping file: test.php (remote is newer)
Автор: Victor_VG
Дата сообщения: 19.12.2010 05:20
Aganel

Ну, ТС в этом смысле тот ещё клиент. Проще вывести данные ls/list и по ним проверить.
Автор: Aganel
Дата сообщения: 19.12.2010 14:02
Victor_VG, подскажите, как это сделать. На компьютере, где я запускаю wput, стоит Windows.

Из линуксовых команд я на фтп запускал пока только chmod, опять таки через тотал коммандер. На ls через него же ответ „500 Unknown command“, на list нет ответа.

Через стандартную утилиту ftp на команды dir и ls ответ „200 PORT command successful“ и тишина.
Автор: slech
Дата сообщения: 20.01.2011 10:53

Цитата:
-rwxrwxrwx 1 root root 4299845967 2011-01-19 20:10 arc.7z
-rw-r--r-- 1 root root 2 2011-01-20 10:47 test.txt



Цитата:
root@ubuntu:/home# wput arc.7z ftp://192.168.1.1/
Error: File `test.7z' does not exist. Don't know what to do about this URL.
Nothing done. Try `wput --help'.


Цитата:
root@ubuntu:/home# wput test.txt ftp://192.168.1.1/
--10:51:07-- `test.txt'
=> ftp://anonymous:xxxxx@192.168.1.1:21/test.txt
Connecting to 192.168.1.1:21... connected!
Logging in as anonymous ... Logged in!
Length: 2

10:51:07 (test.txt) - `74.22B/s' [2]

FINISHED --10:51:07--
Transfered 3 bytes in 1 file at 20.85B/s


Цитата:
root@ubuntu:/home# wput --version
wput version: 0.6


У wput есть прблемы с файлами размером более 4 Gb ?

Страницы: 12

Предыдущая тема: Аналог RemoteApp в Windows Server 2008


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.