wput(1) | Internet Applications - FTP | wput(1) |
wput - A wget-like ftp-uploader
wput [options] file [file ...] URL
Wput is a free utility that is able to upload files to a ftp-server.
Wput is non-interactive and background-capable. It can upload files or whole directories and is meant to be a robust client even for unstable connections and will therefore retry to upload a file, if the connection broke.
Wput supports resuming, so it automatically continues uploading from the point where the previous upload stopped, meaning that you can kill Wput anytime and it will (if the remote ftp-server supports this, being most likely the case) finish the partial uploaded file.
Wput supports connections through proxies, allowing you to use it in an environment that can access the internet only via a proxy or to provide anonymity by hiding your ip-address to the server. For SOCKSv5-proxies Wput supports also listening mode, allowing you to use port-mode ftp through a proxy (useful if the remote ftp is behind a firewall or a gateway).
Wput supports timestamping, so it will (in the ideal case and if timestamping is enabled) only upload files, that are newer than the remote-file.
The upload-rate of Wput can be restricted, so that Wput won't eat all available bandwidth.
URLs are recognized by the ftp://-prefix
Wput first reads the URLs from command-line, and associates the first file with the first URL, the second file with the second URL etc. It then transmits the file/URL combinations that are already complete. Afterwards, Wput uses the --input-file (if any) and reads the URLs using the same sheme as above. In situations where more URLs than files are specified, Wput tries to guess the local filename from the URL. In case there are more files that URLs remaining, Wput uses the last known URL for each of the files.
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. See doc/USAGE.examples for further examples.
To be on the safe side, it is recommended to supply the files before the URLs.
If Wput has an URL without a corresponding filename, Wput tries to guess the local file's location. e.g. using wput ftp://host/directory/path/file, Wput will look out for /directory/path/file. If not found, Wput looks for ./directory/path/file, ./path/file and ./file.
If file is -, 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/ -i -! 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 ! -type d | wput ftp://host/ -i - to tell find, not to output directories.
command ftp "username" "ip/hostname" port "remote_directory" "remote_filename"
The hostname is only supplied if the ip cannot be resolved. If you do not want these parameters to confuse the program from which you read the contents, use something like '-I "cat file; echo > /dev/null"' so that these parameters are passed to echo and to /dev/null afterwards. Since the progressbar is not capable of handling unknown filesizes, the filesize is set to 1 GiB. Therefore the ETA shows a wrong value.
The sorting order is: ip/hostname, port, username, password, directory, filename. Sorting requires a bit more memory since all data needs to be held there.
Specifying this flag forces Wput to use ASCII mode file transfers.
The upload rate is limited on average, meaning that if you limit the rate to 10K and Wput was just able to send with 5K for the first seconds, it will send (if possible) afterwards more than 10K until the average rate of 10K is fulfilled.
See also doc/USAGE.resumehandling
The local date is dermined by the mtime (time of last modification), using the current time-zone. This should be equal to the output of ls -l.
Since you usually do not want to resume existing files, you should employ the --reupload --dont-continue flags as well.
If you want Wput to start using port mode ftp, specify this flag.
Normally, the exit status is 0 if either everything went fine or there was nothing to do. If some files were skipped during the upload (due to timestamping or resume-rules) the exit status is set to 1. If some files failed to be transmitted due to an remote error, exit status is 2. If some files failed and some others were skipped, exit status is 3. For general problems like failure of some system-functions the exit status is 4.
You are welcome to send bug reports and suggestions about Wput through the Sourceforge Bugtracking System: http://sourceforge.net/tracker/?group_id=141519
Please send all available information that might concern this bug (e.g. Operating System and what can be done to reproduce the error). Supply also the debug-output (but remove confidential data if any), which helps a lot analysing the problem. If you use a wputrc file, it might also be useful to provide the relevant parts of it.
If there is a crash due to a segfault or similar, try to run it in a debugger, e.g. gdb /usr/bin/wput core and type where to get the backtrace. It would also be great help if you could recompile wput with memory-debugging support (make clean; make memdbg; [make install]) and use this debug-dump.
Many options can be set in a wputrc file. For its documentation consult the sample file provided by Wput. There are some USAGE.* files in the doc/ directory of Wput. These contain further information and samples on how to use Wput.
Wput is written by Hagen Fritsch <fritsch+wput-man@in.tum.de>
0.6.2 | Hagen Fritsch |