FTPFS(4)                                                 FTPFS(4)

     NAME
          ftpfs  - file transfer protocol (FTP) file system

     SYNOPSIS
          ftpfs [ -/dqnt ] [ -m mountpoint ] [ -a password ] [ -e ext
          ] [ -k keyspec ] [ -o os ] [ -r remoteroot ] system

     DESCRIPTION
          Ftpfs dials the TCP file transfer protocol (FTP) port, 21,
          on system and mounts itself (see bind(2)) on mountpoint
          (default /n/ftp) to provide access via FTP to files on the
          remote machine.  Ftpfs attempts to use FTP's `passive' mode
          but falls back to using `active' mode if that fails.  If
          required by the remote machine, ftpfs will ask factotum(4)
          for a key matching the pattern

               proto=pass service=ftp server=system user? !password? keyspec

          (If factotum does not have such a key, factotum will prompt
          the user for one.)

          The user names ftp and anonymous conventionally offer
          guest/read-only access to machines.  Anonymous FTP may be
          called without using factotum by using the -a option and
          specifying the password.

          By default the file seen at the mount point is the user's
          remote home directory if he has one.  The option -/ forces
          the mount point to correspond to the remote root.  The
          option -r forces the mount point to correspond to the remote
          directory remoteroot.

          To avoid seeing startup messages from the server use option
          -q.  To see all messages from the server use option -d.

          Some systems will hangup an ftp connection that has no
          activity for a given period.  The -K option causes ftp to
          send a NOP command every 15 seconds to attempt to keep the
          connection open.  This command can cause some servers to
          hangup, so you'll have to feel your way.

          The -t option causes ftpfs to negotiate TLS encryption with
          the server.

          To terminate the connection, unmount (see bind(1)) the mount
          point.

          Since there is no specified format for metadata retrieved in
          response to an FTP directory request, ftpfs has to apply
          heuristics to steer the interpretation.  Sometimes, though

     FTPFS(4)                                                 FTPFS(4)

          rarely, these heuristics fail.  The following options are
          meant as last resorts to try to steer interpretation.

          A major clue to the heuristics is the operating system at
          the other end.  Normally this can be determined automati-
          cally using the FTP SYST command.  However, in some cases
          the server doesn't implement the SYST command.  The -o
          option will force the case by specifying the name of the
          operating system.  Known system types are: UNIX, SUN, TOPS,
          Plan9, VM, VMS, MVS, NetWare, OS/2, TSO, and WINDOWS_NT.

          Some systems and/or FTP servers return directory listings
          that don't include the file extension.  The -e option allows
          the user to specify an extension to append to all remote
          files (other than directories).

          Finally, there are two FTP commands to retrieve the contents
          of a directory, LIST and NLST.  LIST is approximately equiv-
          alent to `ls -l' and NLST to `ls'.  Ftpfs normally uses
          LIST.  However, some FTP servers interpret LIST to mean,
          give a wordy description of the file.  Ftpfs normally
          notices this and switches to using NLST.  However, in some
          rare cases, the user must force the use of NLST with the -n
          option.

     EXAMPLE
          You want anonymous FTP access to the system
          export.lcs.mit.edu.  The first import(4) command is only
          necessary if your machine does not have access to the
          desired system, but another, called gateway in this example,
          does.

               import gateway /net
               ftpfs -a yourname@yourmachine export.lcs.mit.edu

     SOURCE
          /sys/src/cmd/ip/ftpfs

     SEE ALSO
          bind(2)

     BUGS
          Symbolic links on remote Unix systems will always have mode
          0777 and a length of 8.

          After connecting to a TOPS-20 system, the mount point will
          contain only one directory, usually /n/ftp/PS:<ANONYMOUS>.
          However, walking to any valid directory on that machine will
          succeed and cause that directory entry to appear under the
          mount point.

          Ftpfs caches files and directories.  A directory will fall

     FTPFS(4)                                                 FTPFS(4)

          from the cache after 5 quiescent minutes or if the local
          user changes the directory by writing or removing a file.
          Otherwise, remote changes to the directory that occur after
          the directory has been cached might not be immediately visi-
          ble.  Attempting to walk to directory/.flush.ftpfs will
          flush directory from the cache, thus forcing ftpfs to re-
          read it.

          There is no way to issue the appropriate commands to handle
          special synthetic FTP file types such as directories that
          automatically return a tar of their contents.

          Ftpfs makes copies in /tmp of files being transferred, so
          its effects might not be immediate.  If there is enough main
          memory, you might want to run ramfs(4) first.

          Filenames containing spaces will confuse ftpfs (and other
          FTP clients).