NAME¶
htcp, htmv, htrm, htls, htll, htmkdir, htfind, htping - file transfers
  and queries via HTTP/HTTPS/SiteCast
SYNOPSIS¶
htcp, htmv [options] Source-URL[s] Destination-URL
 
htrm, htls, htll, htmkir, htfind [options] Target-URL[s]
 
htping [options]
DESCRIPTION¶
htcp is a client to fetch files or directory listings from remote servers
  using HTTP or HTTPS, or to put or delete files or directories onto remote
  servers using HTTPS. htcp is similar to 
scp(1), but uses HTTP/HTTPS rather
  than ssh as its transfer protocol. htcp can also use the HTCP protocol to
  query HTTP(S) fileservers via SiteCast.
 
When talking to a fileserver with HTTPS, htcp can run "anonymously",
  with a standard X.509 user certificate and key, or with a GSI Proxy. This
  makes htcp very useful in Grid environments where many users have certificates
  and where jobs and users have access to GSI proxies.
 
URLs¶
htcp supports the file:, http: and https: URL schemes as sources and
  destinations. If no scheme is given, the URL scheme is assumed to be file: and
  relative to the current directory if not an absolute path.
 
If multiple sources are given during a copy, they will be used in turn and the
  destination must be a directory (directories are indicated by a trailing /)
  However, source and destination cannot both refer to remote servers.
 
OPTIONS¶
  - -v/--verbose
 
  - Turn on debugging information. Used once, this option will
      enable htcp's messages to stderr. Used twice, will also enable the
      underlying libcurl messages.
    
 
   
  - --delete
 
  - Instead of copying files, delete all the URLs given on the
      command line. Calling the program as htrm has the same effect.
    
 
   
  - --list
 
  - Instead of copying files, output lists of files located in
      the URL-directories given on the command line. Calling the program as htls
      has the same effect.
    
 
   
  - --long-list
 
  - Instead of copying files, output long listings of files
      located in the URL-directories given on the command line. If available,
      the size in bytes and modification time of each file is given. Calling the
      program as htll has the same effect.
    
 
   
  - --mkdir
 
  - Instead of copying files, attempt to create a directory on
      a remote server with HTTP PUT. The server must support the convention that
      PUT to a URL with a trailing slash means create a directory. No file body
      is sent. Calling the program as htmkdir has the same effect.
    
 
   
  - --move
 
  - Move/rename files on a single remote server, given the two,
      absolute URLs of the remote file names. Server must support HTTP/WebDAV
      MOVE. Calling the program as htmv has the same effect.
    
 
   
  - --ping
 
  - Query specified multicast groups with the HTCP NOP
      ("No Operation") code. SiteCast enabled servers will respond
      immediately with a NOP reply, and all of the responses will be listed,
      with the round trip time in milliseconds. Any waiting times specified in
      the --groups option will be ignored. Calling the program as htping has the
      same effect. (--groups must be used for this option to work.)
    
 
   
  - --find
 
  - Query specified multicast groups with the HTCP TST code.
      SiteCast enabled servers will respond with TST replies if they have the
      files corresponding to the given SiteCast target URL(s). All of the
      transfer URLs returned will be listed. Waiting times specified in the
      --groups option will be used to space out the multicast queries, but the
      program listens for responses continuously. Calling the program as htfind
      has the same effect. (--groups must be used for this option to work.)
    
 
   
  - --groups <IP Groups>
 
  - IP multicast groups to use for SiteCast queries. IP Groups
      is a comma separated list of groups, in the format:
      nnn.nnn.nnn.nnn:port[:ttl[:seconds]] The IP number and port must be
      specified. The IP time-to-live, ttl, controls how many networks the
      multicast packets may pass through - the default, 1, limits packets to the
      local network. Multiple groups may be specified, separated by commas. If
      multiple groups are specified, then seconds is the time to wait before
      making the next multicast - 1 second is the default.
    
 
   
  - --timeout <seconds>
 
  - A request timeout used for multicast ping.
    
 
   
  - --anon
 
  - Do not attempt to use X.509 user certificates or GSI
      proxies to authenticate to the remote HTTPS server. This means you are
      "anonymous", but the server's identity may still be verified and
      the connection is still encrypted.
    
 
   
  - --cert <X.509 cert path> and --key <X.509 key
    path>
 
  - Path to the PEM-encoded X.509 or GSI Proxy user certificate
      and key to use for HTTPS connections, intead of "anonymous
      mode." If only one of --key or --cert is given, then that will be
      tried for both. If neither is given, then the following order of
      precedence is used: the file name held by the variable X509_USER_PROXY;
      the file /tmp/x509up_uID (with Unix UID equal to ID); the file names held
      by X509_USER_CERT / X509_USER_KEY; the files ~/.globus/usercert.pem and
      ~/.globus/userkey.pem (where ~/ is the home directory of the user.)
    
 
   
  - --capath <X.509 CA root certs directory or file>
 
  - Path to the PEM-encoded CA root certificates to use when
      verifying remote servers' host certificates in HTTPS connections. Ideally
      this should be a directory of hash.0 files as described in the OpenSSL
      verify(1) man page, but a file may be used instead. If --capath is not
      given, the value of the environment variable X509_CERT_DIR will be tried.
      If this is not valid, then /etc/grid-security/certificates will be used.
    
 
   
  - --no-verify
 
  - Do not use CA root certificates to verify remote servers'
      host certificates. This is useful for testing sites before their
      certificate is set up properly, but leaves you vulnerable to "man in
      the middle" attacks by hostile servers masquerading as your target.
    
 
   
  - --grid-http
 
  - Try to use GridHTTP redirection for HTTPS URLs. Compatible
      servers will perform authentication and authorization on the HTTPS
      connection and then redirect to HTTP for the GET or PUT file transfer.
      htcp makes the HTTP request using the GRID_AUTH_PASSCODE single-use
      passcode obtained via HTTPS. The --grid-http option will be ignored for
      directory operations or HTTP URLs. If a redirected transfer isn't
      possible, a normal HTTPS data transfer will be attempted.
    
 
   
  - --sitecast
 
  - Try to use SiteCast to locate remote files which are to be
      copied (currently only for the fetching of remote files.) If no
      location is found via SiteCast, then a direct request for the given URL is
      tried. (--groups must be used for this option to work.)
    
 
   
  - --domain <SiteCast domain>
 
  - Try to use SiteCast to locate remote files which are to be
      copied (currently only for the fetching of remote files) if the
      domain component of the URL matches the SiteCast domain given. If no
      location is found via SiteCast, then a direct request for the given URL is
      tried. (--groups must be used for this option to work.)
    
 
   
FILES¶
  - /tmp/x509up_uID
 
  - Default GSI Proxy file for Unix UID equal to ID.
    
 
   
  - /etc/grid-security/certificates
 
  - Default location for trusted Certification Authority root
      certificates to use when checking server certificates.
    
 
   
  - /tmp/.ca-roots-XXXXXX
 
  - Prior to 7.9.8, the underlying curl library did not support
      the CA root certificates directory. If built with an old version of
      libcurl, htcp will concatenate the certificates in the CA roots directory
      into a unique temporary file and use that.
    
 
   
ENVIRONMENT¶
  - X509_CERT_DIR
 
  - Holds directory to search for Certification Authority root
      certificates when verifying server certificates. (Tried if --capath is not
      given on the command line.)
    
 
   
  - X509_USER_PROXY
 
  - Holds file name of a GSI Proxy to use as user certificate.
      (Tried if --cert or --key are not given on the command line.)
    
 
   
  - X509_USER_CERT and X509_USER_KEY
 
  - Holds file name of X.509 user certificate and key. (Tried
      if X509_USER_PROXY is not valid.)
    
 
   
EXIT CODES¶
0 is returned on complete success. Curl error codes are returned when reported
  by the underlying curl library, and CURLE_HTTP_RETURNED_ERROR (22) is returned
  when the HTTP(S) server returns a code outside the range 200-299. The manpage
  
libcurl-errors(3) lists all the curl error codes.
 
TO DO¶
Recursive copying. Server-side wildcards. Parallel streams. Better error
  recovery.
 
AUTHOR¶
Andrew McNab <Andrew.McNab@manchester.ac.uk>
 
htcp is part of GridSite: 
http://www.gridsite.org/
SEE ALSO¶
scp(1), curl(1), wget(1), verify(1),
  libcurl-errors(3)