GFPCOPY(1)

πŸ“¦
version 2.7.20 Β· 2 versions
  • 2.7.20 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking (latest)
  • 2.7.17 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– GFPCOPY(1) β€” the Gfarm parallel-copy bestie πŸ’–

okay so real talk: this is the manual page for gfpcopy, one of the Gfarm girlies, and she is that girl. Gfarm energy, parallel everything, directory recursion, the works. Let's get into it πŸ’…


✨ NAME ✨

gfpcopy β€” copy Gfarm files in parallel πŸ¦‹


✨ SYNOPSIS ✨

gfpcopy [-nqvdpPU] [-X regexp] [-S source-domainname]
        [-h source-hostfile] [-D destination-domainname]
        [-H destination-hostfile] [-j num-of-processes]
        [-J num-of-processes] [-M limit-byte] [-z minimum-byte]
        [-Z maximum-byte] [-w way-of-scheduling]
        [-W kilobytes-for-threshold] [-s KB/s-to-simulate]
        [-F num-for-readahead] [-b bufsize] [-f] [-e] [-k] source-path
        destination-path

✨ DESCRIPTION ✨

So basically, gfpcopy copies files in parallel. Like, multiple at once. Iconic behaviour fr fr πŸ”₯

When the source-path is a directory, the files under that directory get copied recursively. It goes all the way down, no cap.

When the destination-path does not exist, the directory is created. When the destination-path does exist, a directory with the same name as the source-path gets created underneath the destination-path. The way she just handles that for you 😌

A set of source/destination hosts can be specified by a domain name and/or a hostlist file. When both a domain name and a hostlist file are specified, the set of hosts is determined by both conditions together (yes, both, they collab). When a set of source hosts is specified, only files stored on those source hosts get copied.

gfpcopy also retrieves the directory entries in parallel too, because why would she do anything one at a time 🌈


✨ SOURCE PATH ✨

source-path has to be one of these formats, bestie. Also heads up: files on HPSS cannot be copied. πŸ’€

  • path-name β€” this is a relative path or an absolute path of a local file system. When the path is a mount point on gfarm2fs, files are copied without passing through the gfarm2fs. Sneaky (affectionate).
  • gfarm:... β€” this is a Gfarm URL πŸŽ€
  • file:... β€” this is an URL of a local file system.

✨ DESTINATION PATH ✨

destination-path has to be one of these formats:

  • path-name β€” a relative path or an absolute path of a local file system. When the path is a mount point on gfarm2fs, files are copied without passing through the gfarm2fs.
  • gfarm:... β€” a Gfarm URL of a directory.
  • file:... β€” an URL of a directory on a local file system.
  • hpss:... β€” an URL of a directory on HPSS. ⚠️ If the same directory as the source-path exists under this directory, the source-path cannot be copied. Also the differential copy is not supported for HPSS, so don't come for her about that. Relative paths like hpss:. and hpss:dir can be specified though 🫢

✨ GFPCOPY OPTIONS ✨

These are the options that are only for gfpcopy, her exclusive little set πŸ’…

  • -b bufsize β€” Specifies the buffer size in bytes to copy. The default value is 64 KiB (64 * 1024).
  • -f β€” With the -f option, existing files will be overwritten when the size is different or the modification time (mtime) is different from the source file. Without the -f option, existing files will be overwritten when they are older than the corresponding source files in the modification time. Pick your fighter ✨
  • -e β€” Skips existing files in order to execute gfpcopy simultaneously. She's not redoing work, periodt.
  • -k β€” Does not copy symbolic links. πŸš«πŸ”—

✨ COMMON OPTIONS ✨

The following options are common options for gfprep and gfpcopy β€” shared besties 🫢

  • -X regexp β€” Skips files matched by the pattern of regexp. When multiple patterns need to be specified, specify -X options multiple times. Stack 'em up 🧚
  • -S source-domainname β€” Creates file replicas or copies files only stored on the hosts in the specified domain name.
  • -h source-hostfile β€” Creates file replicas or copies files only stored on the hosts listed in the specified hostfile. The source-hostfile consists of a file system node name on each line. If - is specified, standard input is used to read the host list. πŸ‘€
  • -L β€” Creates file replicas or copies files from the hosts specified by the -S or -h option.
  • -D destination-domainname β€” Specifies the domain name for destination. If neither this nor the -H option is specified, replicas may be copied to any available host. Free spirit πŸ’«
  • -H destination-hostfile β€” Specifies a file which describes hostnames for destination. The destination-hostfile consists of a file system node name on each line. If - is specified, standard input is used to read the host list.
  • -j num-of-processes β€” Specifies the maximum number of processes to create file replicas (or copy files) simultaneously. The default value is the parameter of client_parallel_copy in gfarm2.conf. (see man gfarm2.conf) The maximum number of process per file system node for source or destination is the number of CPUs (see man gfhost). πŸ–₯️✨
  • -J num-of-processes β€” Specifies the number of processes to retrieve directory entries in parallel. The default value is 8.
  • -M total-byte β€” Specifies the total file size in bytes to replicate or copy. This option is useful to increase the available capacity by moving the specified bytes of files. The default value is unlimited. ♾️
  • -z minimum-byte β€” Specifies the minimum file size in bytes to replicate or copy. This option is useful not to replicate or copy small files. The default value is unlimited.
  • -Z maximum-byte β€” Specifies the maximum file size in bytes to replicate or copy. This option is useful not to replicate or copy large files. The default value is unlimited.
  • -w way-of-scheduling β€” Specifies a scheduling method. noplan replicates/copies while finding files. greedy schedules greedily the order of replication/copy beforehand. The default behavior is noplan. ⚠️ greedy scheduling cannot be used with the -N option and -m option.
  • -W kibibytes β€” Specifies a threshold size/cost (KiB) to flat costs of Connections. A Connection means a scheduling information to assign files per a child-process. This option is effective with -w greedy. The default value is 50*1024 KiB (50 MiB).
  • -I sec-to-update β€” Specifies the interval in seconds to collect load average and available capacity. Default is 300 seconds. ⏰
  • -B β€” Gfarm 2.6.16 or later does not select high loaded file system nodes. This option disables this feature. High loaded node is defined by having more CPU load than schedule_busy_load_thresh * number of CPUs. For details of schedule_busy_load_thresh, refer to a manual page of gfarm2.conf. She's tired, let her rest 😭
  • -U β€” Disables checking the available disk space of the selected node every time.
  • -F num-of-dirents β€” Specifies the number of readahead entries to retrieve the directory entries. The default value is 10000.
  • -s kilobytes-per-second β€” Specifies a throughput (KB/s) to simulate the replication/copy, and does nothing (gets file information only). Fake it till you make it πŸ’…
  • -n β€” Does nothing.
  • -p β€” Reports the total performance information. πŸ“Š
  • -P β€” Reports the performance information for each file and all files.
  • -q β€” Suppresses non-error messages. 🀫
  • -v β€” Displays verbose output.
  • -d β€” Displays debug output. πŸ›
  • -? β€” Displays a list of command options.

✨ EXAMPLES ✨

To copy files under the directory recursively:

$ gfpcopy gfarm:///dir file:///tmp/dir

$ gfpcopy file:///tmp/dir gfarm:///dir

$ gfpcopy gfarm:///dir1 gfarm:///dir2

$ gfpcopy gfarm:///dir hpss:///tmp/dir

$ cd /mnt/gfarm2fs
$ gfpcopy dir /tmp/dir

To copy a file:

$ gfpcopy gfarm:///dir/file file:///dir

$ cd /mnt/gfarm2fs
$ gfpcopy file /tmp/dir

✨ NOTES ✨

To retrieve the directory entries efficiently, it is better to execute the gfpcopy command near the metadata server. When you need to execute the gfpcopy command far from the metadata server, increase the parallelism by the -j and -J options. Basically: stay close to the metadata server, or turn the parallel dials way up 🌸


✨ SEE ALSO ✨

gfprep(1), gfreg(1), gfexport(1), gfarm2.conf(5)


πŸ’– that's the whole page bestie, you ate it. go copy some files in parallel, you've got this 🫢

this has been the Gfarm manual page for gfpcopy, from the Gfarm girlies β€” dated 27 Aug 2015 ✨