COMMAND NAME: hawq scp

Copies files between multiple hosts at once.

*****************************************************
SYNOPSIS
*****************************************************

hawq scp { -f <hostfile_gpssh> | -h <hostname> [-h <hostname> ...] } 
[-J <character>] [-v] [[<user>@]<hostname>:]<file_to_copy> [...] 
[[<user>@]<hostname>:]<copy_to_path>

hawq scp -? 

hawq scp --version

*****************************************************
DESCRIPTION
*****************************************************


The hawq scp utility allows you to copy one or more files from the 
specified hosts to other specified hosts in one command using 
SCP (secure copy). For example, you can copy a file from the 
HAWQ master host to all of the segment hosts at 
the same time.

To specify the hosts involved in the SCP session, use the -f 
option to specify a file containing a list of host names, or use 
the -h option to name single host names on the command-line. At 
least one host name (-h) or a host file (-f) is required. The 
-J option allows you to specify a single character to substitute 
for the hostname in the copy from and to destination strings. 
If -J is not specified, the default substitution character is 
an equal sign (=). For example, the following command will 
copy .bashrc from the local host to /home/gpadmin on all hosts 
named in hostfile_gpssh:

    hawq scp -f hostfile_gpssh .bashrc =:/home/gpadmin 

If a user name is not specified in the host list or with 
user@ in the file path, hawq scp will copy files as the currently 
logged in user. To determine the currently logged in user, do a 
whoami command. By default, hawq scp goes to $HOME of the session 
user on the remote hosts after login. To ensure the file is 
copied to the correct location on the remote hosts, it is 
recommended that you use absolute paths.

Before using hawq scp, you must have a trusted host setup between 
the hosts involved in the SCP session. You can use the utility 
gpssh-exkeys to update the known host files and exchange public 
keys between hosts if you have not done so already.


*****************************************************
OPTIONS
*****************************************************


-f <hostfile_gpssh>

Specifies the name of a file that contains a list of hosts 
that will participate in this SCP session. The syntax of the 
host file is one host per line as follows:

<hostname>

-h <hostname>

Specifies a single host name that will participate in this 
SCP session. You can use the -h option multiple times to 
specify multiple host names.


-J <character>

The -J option allows you to specify a single character to 
substitute for the hostname in the copy from and to destination 
strings. If -J is not specified, the default substitution 
character is an equal sign (=).

-v (verbose mode)

Optional. Reports additional messages in addition to the 
SCP command output.

--ignore-bad-hosts
Ignore copying files to the hosts on which test SSH attempt failed
and continue with the remaining. If test SSH failed, it indicates 
that either the host is not working or there are issues while attempting
to SSH on these host. Once the skipped hosts are brought back, ensure 
that the required files are synced to them.

<file_to_copy>

Required. The file name (or absolute path) of a file that 
you want to copy to other hosts (or file locations). This 
can be either a file on the local host or on another named 
host.

<copy_to_path>

Required. The path where you want the file(s) to be copied 
on the named hosts. If an absolute path is not used, the 
file will be copied relative to $HOME of the session user. You 
can also use the equal sign '=' (or another character that you 
specify with the -J option) in place of a hostname. This will 
then substitute in each host name as specified in the supplied 
host file (-f) or with the -h option.

-? (help)

Displays the online help.

--version

Displays the version of this utility.

*****************************************************
EXAMPLES
*****************************************************


Copy the file named installer.tar to / on all the hosts in the 
file host_file.

hawq scp -f host_file installer.tar =:/

Copy the file named myfuncs.so to the specified location on 
the hosts named sdw1 and sdw2:

hawq scp -h sdw1 -h sdw2 myfuncs.so \
=:/usr/local/greenplum-db/lib


*****************************************************
SEE ALSO
*****************************************************


hawq ssh-exkeys, hawq ssh
