GT 4.0 Component Guide to Public Interfaces: GridFTP

1. Semantics and syntax of APIs

1.1. Programming Model Overview

The Globus FTP Client library provides a convenient way of accessing files on remote FTP servers. In addition to supporting the basic FTP protocol, the FTP Client library supports several security and performance extensions to make FTP more suitable for Grid applications. These extensions are described in the Grid FTP Protocol document.

In addition to protocol support for grid applications, the FTP Client library provides a plugin architecture for installing application or grid-specific fault recovery and performance tuning algorithms within the library. Application writers may then target their code toward the FTP Client library, and by simply enabling the appropriate plugins, easily tune their application to run it on a different grid.

All applications which use the Globus FTP Client API must include the header file "globus_ftp_client.h" and activate the GLOBUS_FTP_CLIENT_MODULE.

To use the Globus FTP Client API, one must create an FTP Client handle. This structure contains context information about FTP operations which are being executed, a cache of FTP control and data connections, and information about plugins which are being used. The specifics of the connection caching and plugins are found in the "Handle Attributes" section of the API documentation.

Once the handle is created, one may begin transferring files or doing other FTP operations by calling the functions in the "FTP Operations" section of the API documentation. In addition to whole-file transfers, the API supports partial file transfers, restarting transfers from a known point, and various FTP directory management commands. All FTP operations may have a set of attributes, defined in the operationattr section, associated with them to tune various FTP parameters. The data structures and functions needed to restart a file transfer are described in the "Restart Markers" section of the API documentation. For operations which require the user to send to or receive data from an FTP server they must call the functions described in the "globus_ftp_client_data" section of the manual.

The globus_ftp_control library provides low-level services needed to implement FTP clients and servers. The API provided is protocol specific. The data transfer portion of this API provides support for the standard data methods described in the FTP Specification as well as extensions for parallel, striped, and partial data transfer.

1.2. Component API

For information on the internationalization API, see the C Common Libraries Public Interface.

2. Semantics and syntax of the WSDL

GridFTP has no WSDL as it is not Web Service based at this time.

3. Command-line tools

Please see the GridFTP Command Reference.

4. Overview of Graphical User Interface

4.1. Globus GridFTP GUI

The Globus GridFTP GUI is a Java web start application. It provides an easy-to-use interface for connecting to GridFTP servers and transferring files. The GridFTP GUI has the following features:

  • Allows you to browse the local file system and transfer files and directories between the local system and remote GridFTP servers and between two remote GridFTP servers (third-party transfers).

  • Supports file system operations such as creating, deleting and renaming files and directories.

  • Provides reliability by interfacing with the Globus Reliable File Transfer (RFT) service.


  • JDK 1.5.0+

Supported Platforms:

  • Windows

  • Linux

  • MAC

The GUI provides two ways for generating a proxy credential required for the data transfer:

  1. Creating a proxy credential using a locally stored key pair.

  2. Obtaining a proxy from a MyProxy Server. For more information about MyProxy, please visit:

A demo of using the GridFTP GUI is available here. Open the file ending in .htm with any browser with the Flash plugin to start the Flash demo - then just click the green arrows to progress through each screen.

4.2. UberFTP

NCSA, as part of their TeraGrid activity, produces a text based interactive client called UberFTP, which you may want to check out. See ???? for more information.

5. Semantics and syntax of domain-specific interface

5.1. Interface introduction

The Globus implementation of the GridFTP server draws on:

  • three IETF RFCs:

    • RFC 959
    • RFC 2228
    • RFC 2389

  • an IETF Draft: MLST-16
  • the GridFTP protocol specification, which is Global Grid Forum (GGF) Standard GFD.020.

5.2. Syntax of the interface

The command line tools and the client library completely hide the details of the protocol from the user and the developer. Unless you choose to use the control library, it is not necessary to have a detailed knowledge of the protocol.

6. Configuration interface

Please see Section 3.2, “GridFTP server configuration options” in the System's Administrator Guide.

7. Environment variable interface

The GridFTP server or client libraries do not read any environment variable directly, but the security and networking related variables described below may be useful.