rft — Submit and monitor a 3rd party GridFTP transfer



Tool description

Submits a transfer to the Reliable File Transfer Service and prints out the status of the transfer on the console.

Command syntax and options

rft [-h <hostname or ip-address of the container Defaults to localhost> 
-r <port on which the container is listening, Defaults to TCP port 8443>
-l <lifetime of the created resource in minutes Default to 60mins> 
-m <security mechanism. Allowed values: 'msg' for secure message or 'conv' for 
 secure conversation and 'trans' for transport. Defaults to 'trans'.>
-p <protection type, Allowed values 'sig' signature and 'enc' encryption, 
 Defaults to 'sig >
-z <authorization mechanism. Defaults to 'host' authorization. Allowed values: 'self' for self authorization and 'host' for host authorization.> 
-file <file to write EPR of created Reliable  File Transfer Resource]> 
-f <path to the file that contains list of transfers>

This is a sample transfer file that the command-line client will be able to parse. It can also be found in $GLOBUS_LOCATION/share/globus_wsrf_rft_client/ along with other samples for directory transfers and deletes (lines starting with # are comments):

This option when it is set to true means to perform transfer in binary 
form, if it is set to false transfer is done in ASCII. Default is binary.
#Block size in bytes that is transferred. Default is 16000 bytes.
#TCP Buffer size in bytes
#Specifies the size (in bytes) of the TCP buffer to be used by the underlying 
ftp data channels. This is critical to good performance over the WAN.  Use the 
bandwidth-delay  product as your buffer size.


#Notpt (No thirdPartyTransfer): turns third-party transfers off is this option 
is set to false (on if set to true). 
Site firewall and/or software configuration may prevent a connection  
between the two servers (a third party transfer).  If this is  the case, 
RFT will "relay" the data.  It will do a  GET from the source and a PUT to 
the destination. This obviously causes a performance penalty, but will allow 
you to  complete a transfer you otherwise could not do.


#Number of parallel streams: Specifies the number of parallel data connections 
that should be used. 


#Data Channel Authentication (DCAU): Turns off data channel authentication for 
FTP transfers  is set to false.(the default is true to authenticate the data 
# Concurrency of the request: Number of files that you want to transfer at any 
given point. Default is set to one.
#Grid Subject name of the source gridftp server. This is used for Authorization
purposes. If the source gridftp server is running with host credentials you can specify "null" here. By default host authorization is performed
/DC=org/DC=doegrids/OU=People/CN=Ravi Madduri 134710
#Grid Subject name of the destination gridftp server. This is used for Authorization purposes. If the destination gridftp server is running with host 
credentials you can specify "null" here. By default Host authorization is done.
/DC=org/DC=doegrids/OU=People/CN=Ravi Madduri 134710
#Transfer all or none of the transfers: This option if set to true will make RFT
to clean up ( delete ) all the transfers that have been done already if one of the transfers fails. Used in GRAM when staging.

#Maximum number of retries: This is number of times RFT retries a transfer failed with a non-fatal error. 


#Source/Dest URL Pairs: gsiftp urls of source followed by destination. 
If directory is to be recursively transferred the source gsiftp url and 
destination gsiftp url should end with "/". Currently RFT supports Directory - 
Directory, File - Directory, File - File transfers. There can be more URL pairs
and all of them use the same options as above for performing the transfer. 



This command line client is very simple and does not do any intelligent parsing of various command line options or of the options in the sample transfer file. It works fine if used in the way documented here. For more information on all these options please refer to the documentation of globus-url-copy. Also, please note that the maximum number of transfers the command-line client can process before running out of memory is ~21K with the default JVM heap size, which was 64M in our tests. Please look at Performance Reports for more details.