packages icon



 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024






 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:  April 16, 2024