---
name: "tftp"
section: "1"
platform: "linux"
package: "tftp-hpa"
version: "5.2-11"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/tftp"
---

# tftp(1)

IPv4 Trivial File Transfer Protocol client

## NAME

**tftp** - IPv4 Trivial File Transfer Protocol client

## SYNOPSIS

**tftp** \[ *options...* \] \[*host* \[*port*\]\] \[**-c** *command*\]\

## DESCRIPTION

**tftp** is a client for the Trivial file Transfer Protocol, which can be used to transfer files to and from remote machines, including some very minimalistic, usually embedded, systems.  The remote *host* may be specified on the command line, in which case **tftp** uses *host* as the default host for future transfers (see the **connect** command below.)

## OPTIONS

- **-4**

  Connect with IPv4 only, even if IPv6 support was compiled in.

- **-6**

  Connect with IPv6 only, if compiled in.

- **-c** *command*

  Execute *command* as if it had been entered on the tftp prompt. Must be specified last on the command line.

- **-l**

  Default to literal mode. Used to avoid special processing of ':' in a file name.

- **-m** *mode*

  Set the default transfer mode to *mode*.  This is usually used with -c.

- **-R** *port:port*

  Force the originating port number to be in the specified range of port numbers.

- **-v**

  Default to verbose mode.

- **-V**

  Print the version number and configuration to standard output, then exit gracefully.

## COMMANDS

Once **tftp** is running, it issues the prompt `tftp>` and recognizes the following commands:

- **?** *command-name...*

  - **help** *command-name...*

  Print help information

- **ascii**

  Shorthand for **mode ascii**.

- **binary**

  Shorthand for **mode binary**.

- **connect** *host \[port\]*

  Set the *host* (and optionally *port*) for transfers.  Note that the TFTP protocol, unlike the FTP protocol, does not maintain connections between transfers; thus, the **connect** command does not actually create a connection, but merely remembers what host is to be used for transfers.  You do not have to use the **connect** command; the remote host can be specified as part of the **get** or **put** commands.

- **get** *file*

  - **get** *remotefile localfile*

  - **get** *file1 file2 file3...*

  Get a file or set of files from the specified sources.  A remote filename can be in one of two forms: a plain filename on the remote host, if the host has already been specified, or a string of the form *host:filename* to specify both a host and filename at the same time.  If the latter form is used, the last hostname specified becomes the default for future transfers.  Enable **literal** mode to prevent special treatment of the ':' character (e.g. C:\\dir\\file).

- **literal**

  Toggle literal mode.  When set, this mode prevents special treatment of ':' in filenames.

- **mode** *transfer-mode*

  Specify the mode for transfers; *transfer-mode* may be one of **ascii** (or **netascii**) or **binary** (or **octet**.) The default is **ascii**.

- **put** *file*

  - **put** *localfile remotefile*

  - **put** *file1 file2 file3... remote-directory*

  Put a file or set of files to the specified remote file or directory. The destination can be in one of two forms: a filename on the remote host, if the host has already been specified, or a string of the form *host:filename* to specify both a host and filename at the same time.  If the latter form is used, the hostname specified becomes the default for future transfers.  If the remote-directory form is used, the remote host is assumed to be a UNIX system or another system using **/** as directory separator.  Enable **literal** mode to prevent special treatment of the ':' character (e.g. C:\\dir\\file).

- **quit**

  Exit **tftp**. End-of-file will also exit.

- **rexmt** *retransmission-timeout*

  Set the per-packet retransmission timeout, in seconds.

- **status**

  Show current status.

- **timeout** *total-transmission-timeout*

  Set the total transmission timeout, in seconds.

- **trace**

  Toggle packet tracing (a debugging feature.)

- **verbose**

  Toggle verbose mode.

## NOTES

The TFTP protocol provides no provisions for authentication or security.  Therefore, the remote server will probably implement some kinds of access restriction or firewalling.  These access restrictions are likely to be site- and server-specific.

## AUTHOR

This version of **tftp** is maintained by H. Peter Anvin \<hpa@zytor.com\>.  It was derived from, but has substantially diverged from, an OpenBSD source base, with added patches by Markus Gutschke and Gero Kulhman.

## SEE ALSO

[**tftpd**(8)](/tftpd/8.md).
