PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
NAME
pftp - fast data transfer program
SYNOPSIS
Server: pftp [portnumber] [OPTIONS]
Client: pftp [portnumber] [OPTIONS] [hostname] [files]
DESCRIPTION
This manual page documents the GNU version of pftp. pftp transfers
data from host to host. All line feed characters contained in file
and directory names are converted to underline characters. There is
no authorization mechanism necessary but possible. Up to 255
connections are possible at a time. If pftp is started by inetd the
number of connections is unlimited. First the server has to be
started at the destination host with a port number in the range of
1025 and 65535. The server may also be started as a daemon by the
internet daemon or by a normal user in the background. Thereafter the
client may send data to the port of the destination host. By default
pftp uses TCP based connections. However you can also send UDP
datagrams to the server based just on UDP. pftp supports unicast,
broadcast, and multicast. See section EXAMPLES for further
information.
OPTIONS
One important hint: Unless you use a host name number from your host
name list, always put all of your options before the host name on
command line. You can combine options as ever you want. But keep in
mind that there are some options which have optional numbers. Thus if
you set the host number right after such an option pftp could mistaken
this as the options optional number. To be on the save side just put
the host name number as your first option followed by all other
options. Options on command line have highest priority.
- Hereby the client sends all data from standard input to the
destination host. If the client and the server are started with
this option, the server sends all bytes to standard output. If
on the other hand the server was started with this option, but
the client sends regular files, the server copies all files to
disk. If only the client was started with the option, the server
copies the received stream to a file called Stream.x. x is an
increasing number beginning at one. The client reads one
character at a time as well as the server, i.e. sending many
characters with `-' eats a lot of cpu time and might be slower
(see `-b[NUM]').
-a Always overwrite existing files. (Server option only)
-aN1aN2...
Seek the N1th offset from the beginning of the first file, the
- 1 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
N2th offset from the beginning of the second file etc. If a file
is incomplete received then you may try to send just the missing
part of the file, i.e. N1 respectively N2 is the size of the
incomplete file. I suggest to truncate the incomplete file by a
several bytes at first. Then start the server in the appropriate
directory and choose `a' when the server asks you. (Client option
only)
-ANUM
You can limit the number of clients allowed at once to NUM. The
default number is 255.
-b[NUM]
Same as `-' except that a string of size NUM is read and written
at once. pftp does not limit this value. So whatever your
system supports you may set. The default string size for `-b' is
4096. Hereby as well as when sending files the net buffer size
defaults to 32768 unless `-B[NUM]' is given on command line.
-bb Same as `-b32768'.
-B[NUM]
Sets the maximum net buffer size, i.e. SO_SNDBUF resp. SO_RCVBUF
(see setsockopt(2)), specified by `NUM' or if `NUM' is omitted by
the variable PFTPNETBUF (see ENVIRONMENT). The default maximum
net buffer size is 32768. This applies to data sent or received.
The net buffer size is not the window size, which is determined
by TCP in kernel space on the server side, though. But the
bigger you set this size the bigger the window size mostly is
although the window size is dynamically determined. The better
your network connection is the bigger the net buffer size can be
(see also "TCP/IP Network Administration", Second Edition by
Craig Hunt, O'Reilly & Associates, p. 20).
-BB Same as `-B65536'.
-c hostnames
Connections are accepted from clients with specified host names
only. All other clients are simply refused. Host names can also
be given as numbers which are looked up in your pftp resource
file (see RESOURCES). If no host names are specified the
variable PFTPCLIENTS is read instead (see ENVIRONMENT). To use
command line given clients as well as clients specified in the
variable PFTPCLIENTS you may use something like `-cc hostnames',
where hostnames are your command line given host names. You may
also specify domain names: All host names that begin with a dot
are supposed to be domain names, all host names that begin with
an `@' followed by a net in numbers-and-dots (IPv4) respectively
numbers-and-colons (IPv6) notation are supposed to be nets. For
UDP based connections you will probably need a fast machine when
receiving video streams. One hint to pftp's IPv6 version: You
- 2 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
can mix IPv6 and IPv4 addresses, but keep in mind that IPv4
addresses always have to be mapped, i.e. `@130.149.0.0' should be
given as `@::ffff:130.149.0.0'. The same rule applies to your
host name list entries. (Server option only)
-d[=DIR]
The daemon works just like the server started from inetd (see `-
i' ). There are just two differences: First the daemon keeps
running and second the daemon may be started by a normal user.
If your system has shadow password you have to set the variable
PFTPPASS unless the daemon is running with root privileges. If
the daemon is started with root privileges pftp listens on its
officially assigned system port number 662. The client needs
this option to send data to the daemon started by a normal user
on a user port. You should use `-i' respectively `-n' if you
want to send data to the daemon started with root privileges,
i.e. pftp's daemon is listening on its officially assigned
system port number 662.
-D=DIR
Change to directory DIR before receiving data. (Server option
only)
-e Create a normal password (MD5) with crypt(). If you want to set
the variable PFTPPASS you may need the password.
-f[n]
Filter all files before sending them over the network, i.e. the
standard output of the filter on the client side is connected to
the standard input of the filter on the server side. The filters
are specified by PFTPCFILTER respectively PFTPSFILTER (see
ENVIRONMENT). If you need to interact with a filter program use
option `-q'! (TCP based connections only)
-F Determine MPEG AUDIO bitrate and set the bandwidth accordingly.
This is just a simple determination, i.e. pftp looks at the
first frame header of each file to determine the bitrate. This
may fail for some streams since the bitrate usually changes
permanently. So the bitrate found in the first frame header is
no more than an avarage value. Nevertheless most MPEG AUDIO
players buffer a large enough amount of the stream. Thus even if
the streams are sent with a constant bitrate it works quite well
that way. If the bitrate is not recognized the current file will
be skipped. Keep in mind pftp is a multi functional data
transfer program but no internet radio. ;^) (Client option only)
-G Set optimized values for your Gigabit Ethernet link, i.e. the
string size is set to `65000' (see PFTPGIGASTR) and the net
buffer size is set to `128000' (see PFTPGIGANET). Please, adjust
the values to your system needs. Values given to `-B' and `-b'
are just ignored. Use this option on the server as well as on
- 3 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
the client side. Keep in mind that your ipmtu might also be
adjusted to send JUMBO packets if your system supports this.
This option is meant for TCP based connections.
-i[=DIR]
Start pftp from `/etc/inetd.conf' by inetd. You do need a system
pftp resource file which is located in `/etc/pftp.conf'. If
there is no resource file the connection is closed. The
following lines may be specified in `/etc/inetd.conf' (see
inetd(8)) and `/etc/services' (see services(5)) in order to start
the pftp server by inetd with the capability to copy files as
well as directories and to accept specified clients only:
for `/etc/inetd.conf' (all on one line):
pftp stream tcp nowait root
/usr/bin/pftp pftp -irc
for `/etc/services':
pftp 662/tcp
At first
pftp reads the system resource file located in `/etc/pftp.conf'
and gets the user name and the number of the filter program to be
used from the client. Both is sent raw through the net, i.e. a
port sniffer may see them. Then pftp starts two subprocesses and
changes their setuid/setgid bits to the user's setuid/setgid
bits--root is denied by default (see PFTPNOROOT). Now the
password is sent filtered through the net. Thus it is up to you
to decide which level of security you need. The server changes
the directory to DIR if given by the client or to the user's home
directory and sets the environment variables `HOME' and `USER'
appropriately. The user must have a pftp resource file in
his/her home directory from which the filter program is to be
read.
The client needs this option to send data to the server started
with root privileges and to set the destination directory DIR
which is set to the remote user's home directory if =DIR is
omitted. The port number is set to pftp's officially assigned
system port number 662. The port number found in the pftp
resource file is ignored.
-I The client will also send the last time of modification, the user
and group id of the files and directories (see `-r'), as well as
the permission bits of directories if `-r' is used. The server
will accept and set the information. The access time is set to
the value of the last modification time. Also empty directories
are copied that way if `-r' is given on command line.
Furthermore empty files and FIFOs are copied and also devices if
the server respectively the daemon runs with root privileges. To
- 4 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
use this option by default set the variable PFTPSINFO to `1'.
-j Read file and directory (see `-r') names from standard input one
file name per line. This option can also be used if you want to
send file information about directories without using `-r', e.g.
find dir -depth | pftp -jIL user@remote_host
will send the files read from standard input and set the information
of all files and directories. Option `-[b]' is silently ignored.
(Client option only)
-l List host names from file `.pftprc' and send files. New hosts
can be added to the host name list by calling pftp with the host
name. This option cannot be used in standard input mode!
(Client option only)
-L Do not follow symbolic links. The link names are temporaryly
saved in a file. The file is sent after all other files have
been sent. On the target host this file is called
`PFTP_MAKE_LINKS'. It is just a shell script file you may
execute as such `./PFTP_MAKE_LINKS' to automatically create all
symbolic links. The local temporary file is removed after it was
sent. For secrurity reasons you may also check the shell script
before you execute it. If no symbolic links were found no
PFTP_MAKE_LINKS file is sent. (Client option only)
-m[NUM]
Same as `-u[NUM] with all capabilities except that multicasting
is enabled. So it is needed to send or receive multicasted
datagrams unless one of the other `-m' options is chosen. All
`-m' options imply this option. So you only need it to change
the default payload length. Be sure that you enabled
multicasting for your side, i.e. the following needs to be done
on the Linux Operating System: 1) Enable multicasting within your
kernel sources options (Networking options ---> IP:
multicasting). 2) Set the appropriate route (route add -net
224.0.0.0 netmask 240.0.0.0 dev multicasted_interface). If
everything is fine you should find `/proc/net/igmp' in your file
system. (See also the excellent document: `HOWTO/Multicasting'.)
-mg GROUP
Set the multicast group to GROUP. In order to receive
multicasted datagrams you need to join a multicast group. (Server
option only)
-mi IADDR
Use the interface IADDR at your local host for sending
respectively receiving multicasted datagrams. By default the
kernel chooses an interface for you.
- 5 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
-ml By default pftp unsets looping back of datagrams. Thus if you
want to receive back what you sent from your local host you will
need this option. (Client option only)
-mtNUM
Set the time to live (IPv4) respectively the hop limit (IPv6).
Defaults to 1. (Client option only)
-M[=FILE]
In combination with `-n' the message file FILE will be added to
the data. If =FILE is omitted: interactively edit a message file
(see PFTPEDITOR). This option implies `-n'. (Client option only)
-N[NUM]
Peek for new data in the upload directory. If you used a host
specific PFTPRECEIVE variable which points to a different upload
directory you can set NUM to the number of the host name list
entry. Thus you can peek for new data in the directory where the
host specific variable points to.
-n If no further options are given starts the simple pftp file and
directory manager. Else: Send data to another user. The other
user must have set the variable PFTPRECEIVE to the absolute path
of an upload directory (see ENVIRONMENT). On the remote host
pftp has to be started by inetd (see `-i') or run as a daemon
(see `-d'). This option is implied if something like this
pftp user@remote_host files
is given on command line. The port is set to
pftp's officially assigned system port number 662.
-n=SUBJECT
Same as `-n' but also add subject line SUBJECT to the data.
-nl Using host specific PFTPRECEIVE variables you can choose the
upload directory from your host name list and enter the pfm (see
also `-N[NUM]').
-nn Same as `-n' but interactively ask for a subject line and add
that line to the data.
-NUM Choose host NUM from host name list. (Client option only)
-o TCP: Accept only one connection at a time. (Server option only)
-p[NUM]
This option works just like `-b[NUM]' except that all data
received, i.e. also files, are sent to standard output. If `NUM'
is omitted standard output is unbuffered. (Server option only)
- 6 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
-pp Same as `-p32768'. (Server option only)
-P[NUM]
Sets the datagram priority to NUM. If `NUM' is omitted the value
defaults to 4. This option is not supported on all systems. On
the Linux Operating System it is supported. If you don't use
this option pftp automatically sets the Type-Of-Service (TOS)
field (see ip(4)) of the IP header for TCP based connections. If
your system supports it the following settings are made: If `-
w[NUM]' is used it defaults to `IPTOS_MINCOST' and otherwise it
is set to `IPTOS_THROUGHPUT'. If not it is just not set.
(Client option only)
-q Silent mode. Unless options given on command line are misused or
unknown pftp will produce no output to stderr. By default all
existing files are skipped. If option `-a' is given on command
line all existing files are overwritten. If the environment
variable PFTPSLOG is set to the absolute path of a log file, the
server logs all data normally written to stderr (see
ENVIRONMENT). This option is meant for shell skripts and the
like. To be more manageable for scripts there are 52 return
statuses, which are listed in the README file. You should use
this option if you want to pipe output of pftp into a pager
otherwise pftp resets its own terminal modes on exit. It is also
needed if you need to interact with the filter program.
-r If the server and the client are started with this option, all
files received from the client are copied into the appropriate
directories. If necessary pftp creates new directories within
the current directory, i.e. the directory where the server was
started from. If only the client is started with this option, all
files sent by the client are copied into the current directory.
For security reasons the server does not save files in upper
directories, e.g. a `/', or `..' at the beginning of a file name
is just ignored. Also combinations of such are ignored.
In combination with `-T[NUM]' a random string for the net
performance test is used. The random string is produced only
once (see also `-R') and then send again and again.
-R If the remote file already exists a `.x' will be suffixed to the
new file, where `x' is an increasing number starting at one.
This option is only recognized if pftp was started as a server on
command line (see also PFTPRENAME ).
In combination with `-T[NUM]' a random string for the net
performance test is used. A new random string for every loop is
produced (see also `-r'), which consumes a lot of cpu time.
-s TCP: Always skip existing files. UDP: Display on the fly the
number of bytes received by the datagrams. (Server option only)
- 7 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
-SNUM
Using UDP based data transfer used to drop every NUMth datagram.
It is meant to test the stability of the application on the
server side. On the Linux Operating System you can interactively
increase or decrease the value by typing `h' respectively `b'.
Typing `0' means that no datagram will be dropped. (Client
option only)
-T[NUM]
Perform a net performance test. NUM is the number of bytes being
sent during the test. You must adjust the input buffer size with
`-b[NUM]'. You can also set the net buffer size (see `-B[NUM]'),
the datagram priority (see `-P[NUM]'), and the bandwidth (see `-
w[NUM]'). For a UDP based test you cannot set the net buffer
size, though. But you can adjust the payload length with `-
u[NUM]'. In combination with `-r' respectively `-R' a random
string is sent while the buffer size respectively the payload
length is the first seed of the random numbers. Using `-r' the
same random string is sent again and again, whereas with option
`-R' a new random string is produced within every loop--this
consumes a lot of cpu time.
-u[NUM]
Use UDP as data transfer protocol. NUM is the payload length,
i.e. the size of the string sent at once at a time. The default
size is 1472. You cannot combine this option with `-B', `-d',
`-f', and `-i'.
On the client side you can send data and files as if using normal
TCP based connections. Be advised to set the bandwidth (see `-
w[NUM]'). On the Linux Operating System you can interactively
increase or decrease the bandwidth by typing `=' to increase it
by 64 bytes or `.' to increase by one byte respectively `-' to
decrease it by 64 bytes or `,' to decrease by one byte, and
interactively drop datagrams periodically by typing `h'
respectively `b'. Type `0' to stop dropping of datagrams. This
is meant to test your applications on the server side. You can
stop and continue sending datagrams by typing space. You can
skip the current file by typing `n'. The datagrams are sent
without any further protocol header--just UDP. Thus you can use
the client to send data to any program that is able to receive
datagrams via UDP. Likewise pftp's server can be used to receive
any data via UDP, i.e. the server does not care if datagrams are
lost.
You can also set the string length to be received at once by NUM.
The default size is 1472. Since the mechanism is meant to send
AUDIO and VIDEO streams, all data received is written to standard
output. On the Linux Operating System you can interactively
turn on and off of displaying the number of bytes received by
typing `s' on the server side (you will need a fast terminal to
- 8 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
display on the fly the number of bytes received).
-v Ouputs buffer sizes, the bandwidth, datagram priority (if
supported), and the filter program being used.
-w[NUM]
Sets bandwidth in bytes per second specified by `NUM' or if `NUM'
is omitted by the variable PFTPBANDWID. UDP: On the Linux
Operating System this value can be interactively changed by
typing `=' respectively `-'. (Client option only)
-W Displays the warranty.
-x Lets the server exit after the first connection. (Server option
only)
hostname
hostname may look like a host name list entry (see RESOURCES)
without the following port number. pftp contacts the server
started with root privileges if a user name is given on command
line, i.e. the port number is set to 662. If a user name and a
password is included option `-i' is implied. If a user name is
included option `-n' respectively `-i' is implied. Thus you
don't need to specify option `-n' or `-i'.
EXAMPLES
In order to send two files start the server with a port number at your
choice at the destination host (port numbers between 1025 and 32768
are always legal unless they are in use--then simply choose another
port number):
pftp 1234
Then start the client with the same port number at the origin host:
pftp 1234 destinationhost file1 file2
The server is waiting for connections until you quit it by typing `q'
(Linux) or `^C' (other Systems).
Now we want to copy the current directory including all
subdirectories. Start the server at the destination host with option
`-r':
pftp 1234 -r
And analogeously start the client with the same option:
pftp 1234 -r destinationhost .
I suggest to let pftp create the file `.pftprc' to start pftp with a
- 9 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
default port number. See section RESOURCES for further details. If
you start pftp without having a resource file and you use options, or
omit some, that could also be looked up in this file, pftp will ask
you if you want it to create a resource file.
To send data from standard input using the default port number start
the server with option `-' and redirect the standard output wherever
you want to:
pftp - > file
The client is started as usual but this time with option `-':
pftp - destinationhost_or_host_number < file
Imagine you want to send files to a pftp server started with root
privileges and upload the files in the directory `$HOME/misc' where
`$HOME' is the remote user's home directory. If the remote host name
is for example listed in your host name list as number one you may
want to use the following
pftp -1i=misc files
If your host name list entry does not contain the remote user's login
name and maybe the password you will be asked for login name and
password.
Now lets send data to a friend of whom you have no password. The
destination host is listed in your host name list as number 7.
Further more you want to use a filter program for the connection and
also send not merely files but also directories. Thus all you have to
type is
pftp -7frn data
where data is files and directories. In this case the first filter
listed in your filter variable will be used which is the opposite
filter program of the other user's first filter program.
Now let's send directory `dir' to another user recursively. The
following implies `-n':
pftp -r user@remote_host_name dir
Some programs are able to read data from standard input. Assuming
there is a huge file on a remote server we just want to read in by
such a program you can do the following on the program's server side:
pftp -xu | program -
(Keep in mind that when sending datagrams the program reading from
- 10 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
standard input is in charge if datagrams are lost. If the program is
not able to handle incomplete data you need to use TCP based data
transfer: exchange `u' with `pp' for example on the server side and
just drop the `u' on the client side.) And on the client side with a
bandwidth of about 169 KBytes:
pftp -uw173056 remote_host_name files
That is the way to use UDP based data tansfer with pftp. You might
welcome that when omitting the `x' the server keeps running without
closing standard output. Thus if the `program' supports it you can
let another client connecting the server and sending its data without
ever restarting the server.
Now let's do the latter example for the multicasted case: Assuming we
want to use multicast group 225.0.0.27 and keep our trafic within our
local subnet:
pftp -xmg 225.0.0.27 | program -
And on the client side with a bandwidth of about 169 KBytes:
pftp -mw173056 225.0.0.27 files
Another important feature of pftp is that you can send not merely
files but also messages. You might say, well I can send e-mails. But
what differs sending messages with pftp and sending messages with the
mail system is that it is reliable, i.e. you know that the message
arrived where you want it. Imagine you want to send just a message to
a user on a remote host. Thereby using filter number one from your
filter list and adding a subject line and a message interactively.
pftp -nnMf user@remote_host
If `remote_host' is a number the corresponding host from your host
name list is taken. You can set your favorite editor with the
variable PFTPEDITOR. If you do not save the message file with your
editor the sending will be discarded.
Imagine the following situation: You want to install a completely new
distribution of your operating system. Unfortunately the current
system and the users home directories are on the same partition--of
course, next time you choose a different one. But the problem stays
the same for now. To solve the problem you may copy the whole home
directory to a different computer you have access to. So just start
pftp's server on the remote host as such
pftp -Irx
Now you can start the client on your local computer as follows:
- 11 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
pftp -LIr remote_host /home
The `L' prevents pftp from following symbolic links. Instead a script
file is sent afterwards to the remote host which can be executed to
set the links. Remember to start the client with root privileges to
ensure that all files are accessible for the client. You may also set
the variable PFTPLOG on the client side to the absolute path of an
error log file since pftp does not exit if files are not accessible.
Another problem that might occur is that you have a very large gzipped
archive file on one host which you want to unpack on another host but
without uploading the file before unpacking it. Here is the solution
with pftp: First start the server on the target host
pftp -xpp | gzip -cd | tar xvf -
and then send the archive file with pftp's client
pftp target_host linux-2.2.13.tar.gz
Using the GNU version of tar (see tar(1)) you can also use option `z'
of tar instead of `gzip -cd |'.
RESOURCES
There are two resource files pftp may read in. The system resource
file `/etc/pftp.conf' is read in if pftp is started with root
privileges. The user's resource file `~/.pftprc' is read otherwise.
Both files have the following format: At first all needed default
variables have to be specified and at the end of the file goes the
host name list. Host names may be followed by a port number (on the
same line). If no port number is given the default one set with
PFTPPORT is used. At most 255 characters are read in per line.
Variables are set in the resource file like the following:
PFTPPORT 1234
A host name list entry may look like one of these:
username:passwd@hostname port
username:passwd@hostname
username@hostname port
username@hostname
hostname port
hostname
@V<variable name>
@F<file name>
@X.X.X.X
.domain.name
- 12 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
username is the name of the remote user if you send data to the daemon
or to the server started by inetd. passwd is remote user's password.
If you send data to the normal server username and passwd are ignored.
Of course the password is not shown if pftp was started with `-l'.
Empty lines and all comments between a `#' and the end of a line are
ignored. The eighth and nineth line shows line substitution (see Line
and value substitutions). The last two lines are only recognized by
the server (see Host specific variables recognized by the server).
The client just ignores these last two lines. Keep in mind that IPv4
addresses have to be mapped if you use the IPv6 version of pftp, i.e.
`127.0.0.1' has to be given as `::ffff:127.0.0.1'.
ENVIRONMENT
There are two types of variables: default variables, and host specific
variables. A default variable is used if the corresponding host
specific variable is not found.
Host specific variables recognized by the client
If the client is started with `-NUM' (see OPTIONS) variables that
follow the host name list entry number NUM are prefered to the default
variables at the beginning of the resource file. The next host name
list entry (NUM+1) terminates the list of host specific variables.
Host name list entries that are only recognized by the server and
variables that are not recognized by the client are ignored.
Host specific variables recognized by the server
If pftp was started as a daemon (see `-d' and `-i') all remote host
names are compared with those in the user's resource file. If a match
is found and the host name list entry is followed by host specific
variables those variables are read instead of the corresponding
default variables at the beginning of the user's resource file. The
first match found is used!
The daemon/server recognizes also two further types of host name list
entries. The first matches the net given in numbers-and-dots
notation, e.g suppose you want to use the same host specific variables
for all remote hosts of net 130.149.0.0 then the host name list entry
looks like
@130.149.0.0
and is followed by its host specific variables. The second matches
the domain name the remote host belongs to, e.g. suppose you want to
use the same host specific variables for all remote hosts with domain
name tu-berlin.de then the host name list entry looks like
.tu-berlin.de
- 13 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
and is followed by its host specific variables. Variables that are
not recognized by the server are ignored.
Line and value substitutions
If a line or a variable value begins with a `@V<variable name>'
respectively a `@F<file name>' then the line or the variable value is
substituted by the value of the environment variable `variable name'
respectively by the first line of the file `file name'.
Variables
Variables denoted with `<*>' may also be set as environment variables.
Those denoted with `<c>' are recognized by the client as a host
specific variable, variables denoted with `<d>' are recognized by the
daemon as a host specific variable, and variables denoted with `<s>'
are recognized by the server started on command line as a host
specific variable. Command line settings have highest priority;
environment variables have higher priority than variables specified in
the resource file.
PFTPAINFO <d>
If set to `1' file information received from the client (see
PFTPSINFO and `-I') is accepted and applied by the daemon. By
default it is set to `1'.
PFTPAUSER
May be used to specify an alias name for a real login name. If
the alias name is set the real login name is denied. If pftp was
started by the internet daemon alias names have to be specified
in `/etc/pftp.conf'. Otherwise within the pftp resource file of
the user who started the daemon. If the login name is omitted or
equals the alias name the user with that login name is prevented
from receiving data by the daemon or the server started by the
internet daemon. An alias is set as follows
PFTPAUSER alias_name login_name
PFTPBANDWID <*> <c>
Holds the value of the bandwidth (see `-w') in bytes per second.
By default pftp sends as fast as possible.
PFTPCFILTER <*> <c> and PFTPSFILTER <*>
If on the client side variable PFTPCFILTER and on the server side
variable PFTPSFILTER hold names of filter programs with possible
options the filters will be used if `-f' is given on command
line. The variables may hold the absolute path to several
filters. All filter programs have to be seperated by colons.
You may choose a specific filter program with `-fn' where n is
the number of the filter program. The first filter program has
- 14 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
number 1. If n is not given the first filter program will be
used. In order to list all client filters set n to C, to list
all server filters set n to S. To see the host specific filter
variables use `-NUM' respectively `-l'. Technically speeking:
pftp sends its data right into the standard input of the filter
program. The standard output of the filter program on the client
side is directly, i.e. via the network, connected to the
standard input of the filter program on the server side. On the
server side pftp reads the data right from the standard ouput of
the filter program. Thus keep in mind that the filter on the
client side is just the opposite of the filter on the server
side! If you need to interact with your filter program you
should use option `-q' to prevent pftp from blocking keyboard
input.
PFTPCFVARnum <c> and PFTPSFVARnum <d> <s>
If your filter program needs environment variables to be set you
can use these variables to do so. PFTPCFVARnum is used for the
client and PFTPSFVARnum for the server side. `num' is the number
of your filter program in the filter program list. If `num' is
omitted the variables will be used if there are no filter number
specific variables. The variables are set right before the
filter program is started. Variable settings are seperated by
colons. Suppose you want to set environment variables for the
first filter program then variables are set like this
PFTPCFVAR1 variable1 value1:variable2 value2
PFTPSFVAR1 variable1 value1:variable2 value2
PFTPCLIENTS <*> and PFTPDCLIENT
May hold all client host names that are accepted. The names are
seperated by spaces. So if `-c' follows no host name that
variable is read instead. pftp converts all host names to the
numbers-and-dots (IPv6: numbers-and-colons) notation and compares
them with the remote host names that are going to send data. You
can also specify a net in numbers-and-dots notation (e.g.
@130.149.0.0) respectively a domain name (e.g. .tu-berlin.de)
from which hosts are accepted. PFTPDCLIENT is used by the
daemon. It offers the user the chance to choose accepted hosts
too. But the user can only accept those hosts which are also
accepted by root, e.g. if pftp was started with `-c' the user can
only choose hosts from the list of hosts root accepts.
PFTPEDITOR <*> <c>
Holds the name of the editor. The default editor is `vi'.
PFTPFORCEF <d>
This variable is meant for the paranoic. ;^) If set to `1'
clients have to use a filter program otherwise they get a `User
accepts no files' message.
- 15 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
PFTPGIGANET <c>
Holds the net buffer size for Gigabit Ethernet links (see `-G').
The default value when using `-G' is `128000'.
PFTPGIGASTR <c>
Holds the string size for Gigabit Ethernet links (see `-G'). The
default value when using `-G' is `65000'.
PFTPIUPDATE <c>
The pfm updates the main menu looking for incoming data in the
specified interval in seconds. The default value is two seconds.
Zero means no update. You can always update a menu with `^L'.
PFTPLOG <*>
If the variable PFTPLOG is set to the absolute path of an error
file, the client is logging all error messages that occur, while
sending files, in the error file. Since the client does not exit
on errors concerning unreadable or empty files and directories,
it might be useful to log the error messages. So you can send
these mostly few files afterwards.
PFTPLOGFILE
If set to `1', and PFTPSLOG is set, logs also all file and
directory names being transfered.
PFTPNETBUF <*> <c>
Sets the maximum net buffer size in bytes (see `-B').
PFTPNOROOT
If set to `0' allows root `login' when pftp is running as a
daemon with root privileges (see `-d') or was started by inetd
(see `-i'). The default setting is `1'.
PFTPPAGER <*> <c>
Holds the name of the pager. The default pager is pftp's
internal pager. The internal pager's help is called by typing
`?'.
PFTPPASS <d>
If set to an encrypted normal password using crypt() (see
crypt(3)) or pftp called with option `-e' this password is used
instead of the user's system password. If your system has shadow
password and you want to run the daemon without root privileges
you do need this variable to be set. You may set it to `*' in
order to deny login at all.
PFTPPERCENT
If set to `1' pftp outputs the percentage of bytes sent, but not
received, from the current file. The lack depends on the window
size (see also `-B[NUM]'). Sending files will be slower by some
tenth of a second.
- 16 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
PFTPPORT
Holds the default port number.
PFTPRECEIVE <d>
Holds the absolute path of an upload directory for files and
directories sent by other users (see `-n'). If this variable is
unset no other user will be allowed to upload files and
directories.
PFTPRENAME <d>
If the remote file already exists a `.x' will be suffixed to the
new file, where `x' is an increasing number starting at one.
This boolean variable is only read if pftp runs as a daemon (see
also `-R').
PFTPSINFO <c> <s>
If set to `1' the last time of modification, the user and group
id of files and directories as well as permission bits of
directories are always sent. If accepted on the server side (see
also PFTPAINFO and `-I') the information will be set and even
empty files, FIFOS and empty directories will be created. If
PFTPNOROOT is set to 0 also devices are copied. Keep in mind
that only the superuser is allowed to creat devices. By default
it is set to `0'.
PFTPSLOG <*>
If set to the absolute path of a log file the daemon as well as
the server started by inetd log all connections.
PFTPSORTBY <c>
Determines sorting order within the pfm. May be set to `a' for
alphabetical (this is the default setting), `s' for size, and `t'
for the time of last change.
PFTPUPLIMIT <d>
Sets a limit in kilo bytes to the upload directory (see
PFTPRECEIVE). The size defaults to 4096 kilo bytes. Setting
PFTPUPLIMIT to zero means to set no limit at all. This is useful
for big sites with large upload directories. If more than one
client is sending data to the same user pftp is recalculating the
directory size before each file to be sent. This takes more time
the larger the upload directory is and the more data is already
contained in the upload directory.
AUTHOR
Ben Schluricke
DEDICATION
This program is dedicated to Heather O'Rourke.
- 17 - Formatted: December 21, 2025
PFTP(1L) FSF PFTP(1L)
GNU File Transfer Utilities
SEE ALSO
rcp(1), scp(1), kpftp(1)
BUGS
Setting the net buffer size to zero may crash older systems. So you
should use a buffer size of zero for test purposes only. Most newer
systems set a buffer size of zero to one by default.
You may see the latest bug report and the latest version of pftp at
`http://www.pftp.de'.
If you find any bug, please drop me an e-mail.
support@pftp.de
Every comment via e-mail will be appreciated!
- 18 - Formatted: December 21, 2025