GLOBUS-URL-COPY(1)
πΈ GLOBUS-URL-COPY(1) β the Grid Community Toolkit Manual, bestie edition π
okay so. this is the manual page for globus-url-copy, and if you're reading this you're about to move Some Data. let's go π«Ά
β¨ NAME β¨
globus-url-copy β it's globus-url-copy. that's the name. iconic of it honestly π
β¨ SYNOPSIS β¨
globus-url-copy [options] SOURCE-URL DESTINATION-URL
β¨ DESCRIPTION β¨
so globus-url-copy is a command line tool for multi-protocol data movement. it does not care about your drama, it cares about moving your bytes.
it supports these protocol specifiers inside the URL: gsiftp:// (that's GridFTP, the main character), ftp://, http://, https://, sshftp:// and file:///. periodt. π
β¨ OPTIONS β¨
okay here's the whole menu, no skips, no shortcuts, every single one. grab a snack π
-help,-usageβ print help. that's it, that's the whole job.-versionsβ print the versions of all the modules this program uses. like a little receipt of everything it's built on.-c,-continue-on-errorβ do not die after any errors. by default the program will exit after most errors, so this is you saying "bestie, keep going" π-a,-asciiβ convert the file to/from ASCII format to/from local file format.-b,-binaryβ do not apply any conversion to the files. this is the default, and it's lowkey the sane choice.-f FILENAMEβ read a list of URL pairs from filename. every line should containsourceURL destURL. enclose URLs that have spaces in them with double quotes ("). blank lines and lines beginning with#get ignored, so go ahead and leave notes for your future self.-cd,-create-destβ create the destination directory if needed. it's giving prepared. β¨-rβ copy files in subdirectories. recursive behavior, we love her.-fastβ recommended when using GridFTP servers. use MODE E for all data transfers, including reusing data channels between list and transfer operations. it's fast, the name did not lie. π₯-t SECONDSβ run the transfer for this number of seconds and then end. useful for performance testing or forced restart loops.-q,-quietβ suppress all output for successful operation. no notes, just vibes.-v,-verboseβ display URLs being transferred.-vb,-verbose-perfβ during the transfer, display the number of bytes transferred and the transfer rate per second. and also show URLs being transferred. numbers AND names, we're fed π-dbg,-debugftpβ debug ftp connections. prints control channel communication tostderr.-rst,-restartβ restart failed ftp operations. get back up, we try again.-rst-retries RETRIESβ the maximum number of times to retry the operation before giving up on the transfer. use0for infinite. default is5.-rst-interval SECONDSβ the interval in seconds to wait after a failure before retrying the transfer. use0for an exponential backoff. default is0.-rst-timeout SECONDSβ maximum time after a failure to keep retrying. use0for no timeout. default is0.-stall-timeout SECONDS,-st SECONDSβ how long before cancelling/restarting a transfer with no data movement. set to0to disable. default is600seconds.-df FILENAME,-dumpfile FILENAMEβ path to a file where untransferred URLs will be saved for later restarting. the resulting file is the same format as the-finput file. if the file exists, it will be read and all other URL input will be ignored.-do FILENAME,-dump-only FILENAMEβ perform no write operations on the destination. instead, all files that would be transferred are enumerated and dumped to the specified file. the resulting file is the same format as the-finput file. note: if you intend to use this file as input for a future transfer, the-create-destoption will be required if any destination directories do not already exist.-rp,-relative-pathsβ the path portion of ftp URLs will be interpreted as relative to the user's starting directory on the server. by default, all paths are root-relative. when this flag is set, the path portion of the ftp URL must start with%2Fif it designates a root-relative path.-s SUBJECT,-subject SUBJECTβ use this subject to match with both the source and dest servers.-ss SUBJECT,-source-subject SUBJECTβ use this subject to match with the source server.-ds SUBJECT,-dest-subject SUBJECTβ use this subject to match with the destination server.-tcp-bs SIZE,-tcp-buffer-size SIZEβ specify the size (in bytes) of the buffer to be used by the underlying ftp data channels.-bs block SIZE,-block-size block SIZEβ specify the size (in bytes) of the buffer to be used by the underlying transfer methods.-p PARALLELISM,-parallel PARALLELISMβ specify the number of parallel data connections that should be used. more lanes, more zoom π¦-notpt,-no-third-party-transfersβ turn third-party transfers off (they're on by default).-nodcau,-no-data-channel-authenticationβ turn off data channel authentication for ftp transfers.-dcsafe,-data-channel-safeβ set data channel protection mode to SAFE.-dcpriv,-data-channel-privateβ set data channel protection mode to PRIVATE.
β οΈ Warning β οΈ β despite having-dcprivin its command line,globus-url-copywill silently fall back to an unencrypted data channel when connected to a server that does not support data channel encryption (e.g. dCache)! no cap, this is real. know it before you trust it. π
-off,-partial-offsetβ offset for partial ftp file transfers, defaults to0.-len,-partial-lengthβ length for partial ftp file transfers, used only for the source url, defaults the full file.-list URLβ list the files located at URL.-stripeβ enable striped transfers on supported servers.-striped-block-size,-sbsβ set layout mode and block size for striped transfers. if not set, server defaults will be used. if set to0, Partitioned mode will be used. if set to> 0, Blocked mode will be used, with this as the block size.-ipv6β use ipv6 when available (EXPERIMENTAL).-udtβ use UDT, a reliable udp based transport protocol, for data transfers.-g2,-gridftp2β use GridFTP v2 protocol enhancements when possible.-dp,-delayed-pasvβ enable delayed passive.-mn NAME,-module-name NAMEβ set the back-end storage module to use for both the source and destination in a GridFTP transfer.-mp PARAMETERS,-module-parameters PARAMETERSβ set the back-end storage module arguments to use for both the source and destination in a GridFTP transfer.-smn NAME,-src-module-name NAMEβ set the back-end storage module to use for the source in a GridFTP transfer.-smp PARAMETERS,-src-module-parameters PARAMETERSβ set the back-end storage module arguments to use for the source in a GridFTP transfer.-dmn NAME,-dst-module-name NAMEβ set the back-end storage module to use for the destination in a GridFTP transfer.-dmp PARAMETERS,-dst-module-parameters PARAMETERSβ set the back-end storage module arguments to use for the destination in a GridFTP transfer.-aa FILE,-authz-assert FILEβ use the assertions in FILE to authorize the access with both source and destination servers.-saa FILE,-src-authz-assert FILEβ use the assertions in this file to authorize the access with the source server.-daa FILE,-dst-authz-assert FILEβ use the assertions in this file to authorize the access with the dest server.-cache-aa,-cache-authz-assertβ cache the authz assertion for subsequent transfers.-cache-saa,-cache-src-authz-assertβ cache the src authz assertion for subsequent transfers.-cache-daa,-cache-dst-authz-assertβ cache the dst authz assertion for subsequent transfers.-pipeline,-ppβ enable pipelining support for multi-file ftp transfers. currently third-party transfers benefit from this. EXPERIMENTAL.-concurrency,-ccβ number of concurrent ftp connections to use for multiple transfers.-nl-bottleneck,-nlbβ use NetLogger to estimate speeds of disk and network read/write system calls, and attempt to determine the bottleneck component. it's giving detective π-sp COMMANDS,-src-pipe COMMANDSβ set the source end of a remote transfer to use piped in input with the given command line. do not use with-fsstack.-DP COMMANDS,-dst-pipe COMMANDSβ set the destination end of a remote transfer to write data to then standard input of the program run via the given command line. do not use with-fsstack.-pipe COMMANDSβ sets both-src-pipeand-dst-pipeto the same thing. two birds, one flag π¦-dcstack STACK,-data-channel-stack STACKβ set the XIO driver stack for the network on both the source and the destination. both must be GridFTP servers. the stack should contain all network drivers to use, in the order specified from bottom to top (e.g.-dcstack tcp,gsi). if the gsi driver is not included in the stack and data channel authentication is enabled, it will be inserted above the transport driver in the stack.-fsstack STACK,-file-system-stack STACKβ set the XIO driver stack for the disk on both the source and the destination. both must be GridFTP servers. the stack should contain all file system drivers to use, in the order specified from bottom to top.-src-dcstack STACK,-source-data-channel-stack STACKβ set the XIO driver stack for the network on the source GridFTP server. see-dcstackabove for description of the STACK string.-src-fsstack STACK,-source-file-system-stack STACKβ set the XIO driver stack for the disk on the source GridFTP server. see-fsstackabove for description of the STACK string.-dst-dcstack STACK,-dest-data-channel-stack STACKβ set the XIO driver stack for the network on the destination GridFTP server. see-dcstackabove for description of the STACK string.-dst-fsstack STACK,-dest-file-system-stack STACKβ set the XIO driver stack for the disk on the destination GridFTP server. see-fsstackabove for description of the STACK string.-cred PATHβ set the credentials to use for both ftp connections.-src-cred CRED-FILE,-sc CRED-FILEβ set the credentials to use for source ftp connections.-dst-cred CRED-FILE,-dc CRED-FILEβ set the credentials to use for destination ftp connections.-af FILENAME,-alias-file FILENAMEβ file with mapping of logical host aliases to lists of physical hosts. when used with multiple concurrent connections, each connection uses the next host in the list. each line should either be an alias, noted with the@symbol, or ahostname[:port]. currently, only the aliases@sourceand@destinationare valid, and they are used for every source or destination URL.-syncβ only transfer files where the destination does not exist or differs from the source.-sync-levelcontrols how to determine if files differ.-sync-level numberβ criteria for determining if files differ when performing a sync transfer. the default sync level is2. the available levels are:- Level
0will only transfer if the destination does not exist. - Level
1will transfer if the size of the destination does not match the size of the source.
- Level
- Level 2 will transfer if the time stamp of the destination is older than the time stamp of the source. lowkey the classic "is this file stale" vibe π
- Level 3 will perform a checksum of the source and destination and transfer if the checksums do not match. The default algorithm used for this checksum is
MD5, but other algorithms can be specified with the-algoparameter. it's giving "trust issues, but make it cryptographic" β¨
- Level 3 will perform a checksum of the source and destination and transfer if the checksums do not match. The default algorithm used for this checksum is
-checksum-algCHECKSUM-ALGORITHM β set the algorithm type to use for all checksum operations during the transfer. one algo to rule them all, periodt π-verify-checksumβ perform a checksum on the source and destination after each file transfer and compare the two. If they do not match, fail the transfer. The default algorithm used for this checksum isMD5, but other algorithms can be specified with the-checksum-algparameter. no cap, if the vibes don't match, the whole thing goes down π
π ENVIRONMENT π
The following environment variables are recognized, bestie β set these and the client will actually listen π:
GLOBUS_HOSTNAMEβ overrides client hostname communicated to the server π¦GLOBUS_DOMAIN_NAMEβ overrides client domainname communicated to the server πΈGLOBUS_FTP_CLIENT_DATA_IPβ overwrites client IP address communicated to the server for the data connection. Used when the receiver is behind a NAT and should be configured to the external address of its gateway. basically: "hey, this is the face I show the world" πGLOBUS_FTP_CLIENT_SOURCE_PASVβ configures sender side (source) instead of receiver side (destination) to open a data port and establishes the data connection from the receiver to the sender. By default the data connection is established from sender to receiver, but if the receiver is behind a NAT this doesn't work, because the receiver will communicate its own address instead of the external address of its gateway to the sender and its own address can't be reached directly from the sender. not me explaining NAT like it's a situationship π the receiver is giving an address nobody can actually reach, so we flip who knocks on the door π«Ά
π AUTHOR π
Copyright Β© 1999-2016 University of Chicago
and that's the whole page, bestie, we ate π thank you for coming to my ted talk β this was Grid Community Toolkit 6, dated 09/08/2020, and it's literally GLOBUS-URL-COPY(1) the whole time π mwah, go copy some URLs responsibly β¨
π¦ where this page comes from
- debian bookworm: globus-gass-copy-progs 10.12-2 Β· Apache-2.0
- debian trixie: globus-gass-copy-progs 10.13-2+b1 Β· Apache-2.0
- epel 10: globus-gass-copy-progs 10.13-1.el10_0 Β· Apache-2.0
- epel 9: globus-gass-copy-progs 10.13-1.el9 Β· Apache-2.0
- fedora 43: globus-gass-copy-progs 10.13-4.fc43 Β· Apache-2.0
- fedora 44: globus-gass-copy-progs 10.13-5.fc44 Β· Apache-2.0
- ubuntu jammy: globus-gass-copy-progs 10.10-1build1 Β· Apache-2.0
- ubuntu noble: globus-gass-copy-progs 10.13-2build2 Β· Apache-2.0
- ubuntu questing: globus-gass-copy-progs 10.13-2build2
- ubuntu resolute: globus-gass-copy-progs 10.13-2build3 Β· Apache-2.0
- ubuntu stonking: globus-gass-copy-progs 10.13-3build1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms