ncftpput(1)
okay so bestie, pull up a chair, we're reading ncftpput(1) from the General Commands Manual and honestly? it's giving script-writer's dream π
πΈ NAME πΈ
ncftpputβ Internet file transfer program for scripts
yes queen, that's the whole name section. short, sweet, iconic.
β¨ SYNOPSIS β¨
ncftpput [options] remote-host remote-directory local-files...
ncftpput [options] bookmark-name remote-directory local-files...
ncftpput -f login.cfg [options] remote-directory local-files...
ncftpput -c remote-host remote-path-name < stdin
ncftpput -C remote-host local-path-name remote-path-name
five whole ways to call her. pick your fighter π
π OPTIONS π
π Command line flags:
-u XXβ log in as usernameXXinstead ofanonymous.-p XXβ use passwordXXtogether with the username.-P XXβ use port numberXXinstead of the default FTP service port (21).-j XXβ use accountXXon top of the username and password. (deprecated β lowkey retired, don't build your life on it)-d XXβ write debug logging to the fileXX.-aβ use ASCII transfer type instead of binary.-mβ try to make the remote destination directory before copying. manifesting the folder into existence β¨-t XXβ timeout afterXXseconds.-U XXβ use valueXXfor the umask.-v/-Vβ do (do not) use progress meters. The default is to use progress meters if the output stream is a TTY.-f XXβ read the fileXXfor host, user, and password information.-cβ read locally from standard input and write remotely to the specified pathname.-Cβ similar to-c, except a local pathname is specified.-Aβ append to remote files instead of overwriting them. no destruction, only addition π«Ά-T XXβ upload into temporary files prefixed byXX.-S XXβ upload into temporary files suffixed byXX.-Rβ recursive mode; copy whole directory trees. the whole tree, no crumbs left behind π³-r XXβ redial a maximum ofXXtimes until connected to the remote FTP server.-z/-Zβ do (do not) try to resume transfers. The default is to not try to resume (-Z).-Eβ use regular (PORT) data connections.-Fβ use passive (PASV) data connections. The default is to use passive, but to fallback to regular if the passive connection fails or times out.-DDβ delete the local file after successfully uploading it. gone, deleted, no takebacks, it's literally gone bestie π-yβ try using"SITE UTIME"to preserve timestamps on the remote host. not many remote FTP servers support this, so it may not work.-bβ run in the background (by submitting a batch job and then spawningncftpbatch).-bbβ similar to the-boption, but only submits the batch job. You will need to runncftpbatchfor the batch job to be processed. This is useful if you already have ancftpbatchprocess running, or wish to have better control of when batch jobs are processed.
For example, if you wanted to do background processing of three files all on the same remote server, it is more polite to use just one ncftpbatch process to process the three jobs sequentially, rather than having three ncftpbatch processes open three simultaneous FTP sessions to the same server.
-B XXβ try setting the TCP/IP socket buffer size toXXbytes.-W XXβ send raw FTP commandXXafter logging in.-X XXβ send raw FTP commandXXafter each file transferred.-Y XXβ send raw FTP commandXXbefore logging out.
The -W, -X, and -Y options are useful for advanced users who need to tweak behavior on some servers. For example, users accessing mainframes might need to send some special SITE commands to set blocksize and record format information.
For these options, you can use them multiple times each if you need to send multiple commands. For the -X option, you can use the cookie %s to expand into the name of the file that was transferred.
-o XXβ set advanced optionXX.
This option is used primarily for debugging. It sets the value of an internal variable to an integer value. An example usage would be: -o useFEAT=0,useCLNT=1 which in this case, disables use of the FEAT command and enables the CLNT command. The available variables include: usePASV, useSIZE, useMDTM, useREST, useNLST_a, useNLST_d, useFEAT, useMLSD, useMLST, useCLNT, useHELP_SITE, useSITE_UTIME, STATfileParamWorks, NLSTfileParamWorks, require20, allowProxyForPORT, doNotGetStartCWD.
π¦ DESCRIPTION π¦
The whole point of ncftpput is to do file transfers from the command line without entering an interactive shell. This lets you write shell scripts or other unattended processes that can do FTP. It is also useful for advanced users who want to send files from the shell command line without entering an interactive FTP program such as ncftp.
By default the program tries to open the remote host and login anonymously, but you can specify a username and password information. The -u option is used to specify the username to login as, and the -p option is used to specify the password. If you are running the program from the shell, you may omit the -p option and the program will prompt you for the password.
Using the-uand-poptions are not recommended, because your account information is exposed to anyone who can see your shell script or your process information. For example, someone using thepsprogram could see your password while the program runs. bestie I am BEGGING you, don't do this π
You may use the -f option instead to specify a file with the account information. However, this is still not secure because anyone who has read access to the information file can see the account information. Nevertheless, if you choose to use the -f option the file should look something like this:
host sphygmomanometer.ncftp.com
user gleason
pass mypassword
Don't forget to change the permissions on this file so no one else can read them. fr fr, lock that file DOWN π
The -d option is very useful when you are trying to diagnose why a file transfer is failing. It prints out the entire FTP conversation to the file you specify, so you can get an idea of what went wrong. If you specify the special name stdout as the name of the debugging output file, the output will instead print to the screen.
Using ASCII mode is helpful when the text format of your host differs from that of the remote host. For example, if you are sending a text file from a UNIX system to a Windows-based host, you could use the -a flag which would use ASCII transfer mode so that the file created on the Windows machine would be in its native text format instead of the UNIX text format.
You can upload an entire directory tree of files by using the -R flag. Example:
$ ncftpput -R pikachu.nintendo.co.jp /incoming /tmp/stuff
This would create a /incoming/stuff hierarchy on the remote host. slay, a whole directory glow-up β¨
The -T and -S options are useful when you want to upload file to the remote host, but you don't want to use the destination pathname until the file is complete. Using these options, you will not destroy a remote file by the same name until your file is finished. These options are also useful when a remote process on the remote host polls a specific filename, and you don't want that process to see that file until you know the file is finished sending. Here is an example that uploads to the file /pub/incoming/README, using the filename /pub/incoming/README.tmp as a temporary filename:
$ ncftpput -S .tmp bowser.nintendo.co.jp /pub/incoming /a/README
A neat way to pipe the output from any local command into a remote file is to use the -c option, which denotes that you're using stdin as input. The following example shows how to make a backup and store it on a remote machine:
$ tar cf - / | ncftpput -c sonic.sega.co.jp /usr/local/backup.tar
piping your whole filesystem into a remote file? that's main character energy right there π
π DIAGNOSTICS π
ncftpput returns the following exit values:
0β Success.1β Could not connect to remote host.2β Could not connect to remote host - timed out.3β Transfer failed.4β Transfer failed - timed out.5β Directory change failed.6β Directory change failed - timed out.7β Malformed URL.8β Usage error.9β Error in login configuration file.10β Library initialization failed.11β Session initialization failed.
vibe check your exit code before you blame yourself, bestie π
β AUTHOR β
Mike Gleason, NcFTP Software (http://www.ncftp.com). shoutout to Mike, absolute legend π«Ά
π SEE ALSO π
LibNcFTP (http://www.ncftp.com/libncftp/).
and that's the whole page bestie, brought to you by NcFTP Software π this was the ncftpput(1) manual and you ATE it, go upload something iconic πΈπ
β¨
π¦ where this page comes from
- alpine 3.22: ncftp-doc 3.3.0-r0 Β· ClArtistic
- alpine 3.23: ncftp-doc 3.3.0-r0 Β· ClArtistic
- alpine 3.24: ncftp-doc 3.3.0-r0 Β· ClArtistic
- arch rolling: ncftp 3.3.0-2 Β· ClArtistic
- debian bookworm: ncftp 2:3.2.6-1+b1
- debian trixie: ncftp 2:3.2.7-1
- epel 10: ncftp 2:3.3.0-1.el10_1 Β· ClArtistic AND NTP
- epel 9: ncftp 2:3.2.5-23.el9 Β· Artistic clarified
- fedora 43: ncftp 2:3.3.0-2.fc43 Β· ClArtistic AND NTP
- fedora 44: ncftp 2:3.3.0-3.fc44 Β· ClArtistic AND NTP
- nixos 26.05: ncftp 3.3.0
- nixpkgs unstable: ncftp 3.3.0
- ubuntu jammy: ncftp 2:3.2.5-2.2
- ubuntu noble: ncftp 2:3.2.6-1
- ubuntu questing: ncftp 2:3.2.7-1
- ubuntu resolute: ncftp 2:3.2.7-1build1
- ubuntu stonking: ncftp 2:3.2.7-1build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms