wput(1)
π NAME π
okay bestie, this is the wput(1) page, filed under Internet Applications - FTP, and it's genuinely so useful, i'm obsessed.
wput β a wget-like ftp-uploader β¨
πΈ SYNOPSIS πΈ
wput [options] file [file ...] URL
π¦ DESCRIPTION π¦
Wput is a free utility and its whole entire job is uploading files to a ftp-server. that's it. that's the gig. π
Wput is non-interactive and background-capable. it can upload files or whole directories, and it's built to be a robust client even when your connection is being unstable and messy β so if the connection broke, it will retry to upload a file. resilience queen fr fr. πͺ
Wput supports resuming, meaning it automatically continues uploading from the point where the previous upload stopped. which means you can kill Wput anytime and it will β if the remote ftp-server supports this, which is most likely the case β finish the partial uploaded file. no cap, you can just yolo-kill it. π₯
Wput supports connections through proxies, letting you use it in an environment that can only reach the internet via a proxy, or to provide anonymity by hiding your ip-address from the server. and for SOCKSv5-proxies, Wput also supports listening mode β that lets you use port-mode ftp through a proxy, which is lowkey essential if the remote ftp is behind a firewall or a gateway. π§
Wput supports timestamping, so (in the ideal case, and if timestamping is enabled) it will only upload files that are newer than the remote-file. main character energy: only showing up when it actually needs to. β¨
the upload-rate of Wput can be restricted, so that Wput won't eat all available bandwidth. considerate icon behaviour. π«Ά
β¨ URL-Input-Handling β¨
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. then it transmits the file/URL combinations that are already complete. after that, 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 than 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.
π« Guessing Local File π«
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. detective mode activated πβ¨
π OPTIONS π
π Logging and Input File Options π
-a logfile,--append-output=logfileβ append all logged messages to logfile. π--basename=pathβ this option causesWputto snip path from all input-files when they are connected to the URL.wput /usr/share/doc.tgz ftp://host/would createftp://host//usr/share/doc.tgz, whereas specifying/usr/share/as basename will result inftp://host/doc.tgzbeing created. βοΈ-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-, 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-pipeflag 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 likefind | wput ftp://host/ -i -!Wputwould upload all files from the current directory (since the first output offindwill be'.') and afterwards each file again (sincefindpostes its name toWput. and further problematic is thatWputwill upload each directory that is given byfindand sincefinditself recurses all directories, the files would be uploaded three times (or even more often for further subdirectories). usewput ftp://host/to upload everything from the local directory. or usefind ! -type d | wput ftp://host/ -i -to tellfindnot to output directories. π
-I command,--input-pipe=commandβ if no file/directory can be "guessed" (see "Guessing Local File") from the URL, the output of command is taken as file-input. command is invoked as follows:
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. π
-nv,--less-verboseβ be less verbose. that means reducingWput's output to a minimum. specifying this flag more often is equal to the--quietflag. some people also like combining the-vand-nvflags, being quite senseless. π€·-o logfile,--output-file=logfileβ log all messages to logfile. π-q,--quietβ turn offWput's output. π€«-R,--remove-source-filesβ unlinks/deletes files that have been successfully transmitted. bye bye source files π-s,--sortβ if sorting is enabled,Wputfirst reads all URLs from any input-devices available and will sort them before transmitting each file.
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. π§
-v,--verboseβ turn on verbose output. this gives some more information about whatWputdoes. if you specify this flag twice, you get debug output. π
π₯ Upload Options π₯
-A,--asciiβWputautomatically determines which transfer-format to use, by looking at the file-extensions. certain files are recognized as ASCII. these are:txt,c,java,cpp,sh,f,f90,f77,f95,bas,pro,csh,ksh,conf,htm,html,php,pl,cgi,ing,js,asp,bat,cfm,css,dhtml,diz,h,hpp,ini,mak,nfo,shtml,shtm,tcl,pas
specifying this flag forces Wput to use ASCII mode file transfers. π€
-b,--backgroundβ go to background immediately after startup. if no output file is given,wputwill redirect its output to"./wputlog"π-B,--binaryβ specifying this flag forcesWputto use BINARY mode file transfers. π’--bind-address=addressβ when making client TCP/IP connections,bind()to address to address on the local machine. address may br specified as a hostname or IP address. this option can be useful if your machine is bound to multiple IPs. π--force-tlsβ if this flag is specified andWputis linked with the OpenSSL-library, the flag enforces the usage of TLS: if no TLS-connection can be established the process will cancel and not try to go on with an unencrypted connection. π
β Basic Startup Options β
-l rate,--limit-rate=rateβ if you don't wantWputto eat up all available bandwidth, specify this flag. rate is a numeric value. the units'K'(for KiB) and'M'(for MiB) are understood.
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. π¦
-m,--chmodβ this will change the access mode of the transferred files. the format is the three-digit octal unix mode, e.g.644meansrw-r--r--. π-nc,--dont-continueβ if this flag is specified, resuming will be turned off, meaning that a remote file being smaller than the local one will be overwritten. to skip this file, you have to enable--skip-existing.
see also doc/USAGE.resumehandling π
-N,--timestampingβ if timestamping is enabled,Wputwill retrieve a directory list and parse it to determine the remote file-date. if the local file is newer than the remote one (there is a default allowed timevariance of 5 seconds, which can be adjusted in the wputrc-file) it is uploaded, otherwise skipped.
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.
-p,--port-modeβ per default,Wputuses passive mode ftp, which works well for most configurations. if passive mode fails,Wputautomatically falls back to port mode.
if you want Wput to start using port mode ftp, specify this flag. π
--proxy=modeβ alias is option-Y. the mode can be eitherhttpfor http-based proxies (such as SQUID),socksfor SOCKSv5 proxies oroffto disable the proxy. π--proxy-user=nameβ if the proxy-server requires authentication, use NAME as user-name. you need to specify--proxy-passtoo. these information can also be stored in the wputrc-file. π--proxy-pass=passwordβ specifies the password to use for the proxy. π€«
π FTP Options π
--no-directoriesβ ifWputis unable toCWDinto a directory, it will try to create it. if this is not the desired behaviour, specify this flag to forceWputnot to create any directories. π«π-t number,--tries=numberβ set number of retries to number. specify-1for infinite retrying, which is default, too. π-u,--reuploadβ if this flag is specified, a remote file having the same size as the local one is to be uploaded. skipping is default. β¬οΈ--skip-largerβ if this flag is specified, a remote file being larger than the local one will be skipped. default is reuploading it. π--skip-existingβ if this flag is specified, the upload of a file will be skipped if the remote file already exists. βοΈ
π General options π
-V,--versionβ display the version ofwput. π-h,--helpβ print a help screen, with a short description ofwput's command-line options. π
π DIAGNOSTICS π
okay bestie, let's talk about what wput tells you when it's done β the exit status, aka its little mood ring. π«Ά
0β everything's giving immaculate β¨ either it all went fine, or there was literally nothing to do in the first place. either way, we're chilling.1β some files got skipped during the upload. this happens because of timestamping or resume-rules, yk how it is. not a disaster, just a lil "we passed on those ones" energy.2β some files failed to be transmitted because of a remote error. π the other end said no.3β the double whammy: some files failed AND some others were skipped. combo deal, no thank you.4β this one's for general problems, like when some system-functions just fail on you. it's giving "not my fault, the system is being weird." π
π BUGS π
pls pls pls β you are so welcome to send bug reports and suggestions about Wput through the Sourceforge Bugtracking System, here:
http://sourceforge.net/tracker/?group_id=141519
and when you do, bestie, send all the available information that might concern this bug. like, all of it. for example: your Operating System, and what can be done to reproduce the error. π§
also supply the debug-output too β that helps a lot when analysing the problem. (just remove any confidential data if there is any, obviously. π protect urself.)
and if you use a wputrc file, it might also be useful to provide the relevant parts of it. receipts, basically. π
now, if there's a crash due to a segfault or similar, try to run it in a debugger, like this:
gdb /usr/bin/wput core
and type where to get the backtrace. π
it would also be a great help if you could recompile wput with memory-debugging support, like:
make clean; make memdbg; [make install]
and use this debug-dump. seriously, iconic of you. πΈ
π SEE ALSO π
many options can be set in a wputrc file β for its documentation, consult the sample file provided by Wput. π
there are also some USAGE.* files in the doc/ directory of Wput. these contain further information and samples on how to use Wput. go read them, they ate. π₯
π AUTHOR π
Wput is written by Hagen Fritsch <fritsch+wput-man@in.tum.de>
and that's the whole page, bestie! this was wput(1), version 0.6.2 β go off and upload ur files, main character. ππ¦β¨
π¦ where this page comes from
- debian bookworm: wput 0.6.2+git20130413-11 Β· GPL-2.0-or-later
- debian trixie: wput 0.6.2+git20130413-14 Β· GPL-2.0-or-later
- ubuntu jammy: wput 0.6.2+git20130413-11 Β· GPL-2.0-or-later
- ubuntu noble: wput 0.6.2+git20130413-12 Β· GPL-2.0-or-later
- ubuntu questing: wput 0.6.2+git20130413-14
- ubuntu resolute: wput 0.6.2+git20130413-15 Β· GPL-2.0-or-later
- ubuntu stonking: wput 0.6.2+git20130413-15 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms