<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">

<!-- $Id: gfpcopy.1.docbook 9781 2015-06-30 11:29:03Z takuya-i $ -->

<refentry id="gfpcopy.1">

<refentryinfo><date>30 Jun 2015</date></refentryinfo>

<refmeta>
<refentrytitle>gfpcopy</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo>Gfarm</refmiscinfo>
</refmeta>

<refnamediv id="name">
<refname>gfpcopy</refname>
<refpurpose>copy Gfarm files in parallel</refpurpose>
</refnamediv>

<refsynopsisdiv id="synopsis">
<cmdsynopsis sepchar=" ">
  <command moreinfo="none">gfpcopy</command>
  <arg choice="opt" rep="norepeat">-nqvdpPU</arg>
  <arg choice="opt" rep="norepeat">-S <replaceable>source-domainname</replaceable></arg>
  <arg choice="opt" rep="norepeat">-h <replaceable>source-hostfile</replaceable></arg>
  <arg choice="opt" rep="norepeat">-D <replaceable>destination-domainname</replaceable></arg>
  <arg choice="opt" rep="norepeat">-H <replaceable>destination-hostfile</replaceable></arg>
  <arg choice="opt" rep="norepeat">-j <replaceable>num-of-processes</replaceable></arg>
  <arg choice="opt" rep="norepeat">-J <replaceable>num-of-processes</replaceable></arg>
  <arg choice="opt" rep="norepeat">-M <replaceable>total-byte</replaceable></arg>
  <arg choice="opt" rep="norepeat">-z <replaceable>minimum-byte</replaceable></arg>
  <arg choice="opt" rep="norepeat">-Z <replaceable>maximum-byte</replaceable></arg>
  <arg choice="opt" rep="norepeat">-w <replaceable>way-of-scheduling</replaceable></arg>
  <arg choice="opt" rep="norepeat">-W <replaceable>kilobytes-for-threshold</replaceable></arg>
  <arg choice="opt" rep="norepeat">-s <replaceable>KB/s-to-simulate</replaceable></arg>
  <arg choice="opt" rep="norepeat">-F <replaceable>num-for-readahead</replaceable></arg>
  <arg choice="opt" rep="norepeat">-f</arg>
  <arg choice="opt" rep="norepeat">-b <replaceable>bufsize</replaceable></arg>
  <arg choice="plain" rep="norepeat"><replaceable>source-path</replaceable></arg>
  <arg choice="plain" rep="norepeat"><replaceable>destination-path</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>

<!-- body begins here -->

<refsect1 id="description"><title>DESCRIPTION</title>

<para>
<command moreinfo="none">gfpcopy</command> は、
複数のファイルを並列にコピーします。
</para>
<para>
<parameter moreinfo="none">source-path</parameter> がディレクトリの場合は、
その下にあるすべてのファイルとディレクトリをコピーします。
</para>
<para>
<parameter moreinfo="none">destination-path</parameter> が存在しない場合は、
ディレクトリを作成します。
<parameter moreinfo="none">destination-path</parameter> が存在する場合は、
そのディレクトリの下に <parameter moreinfo="none">source-path</parameter>
のディレクトリと同名のディレクトリを作成します。
</para>
<para>
転送先や転送元のホスト群を指定するには、ドメイン名で指定するか、
ホスト名を行ごとに記述したホストリストファイルを指定します。
ドメイン名とホストリストファイルを両方指定した場合は、
両方の条件に合うホスト群を決定します。
転送元ホスト群を指定した場合、
そのホストに存在するファイルのみコピーされます。
</para>
<para>
<command moreinfo="none">gfpcopy</command> は、ディレクトリを辿る際に、
ディレクトリエントリ情報も並列に取得します。
</para>
</refsect1>

<refsect1 id="source-path"><title>SOURCE PATH</title>
<para>
<parameter moreinfo="none">source-path</parameter> には以下を指定できます。
HPSS 上のファイルをコピーできません。
</para>

<variablelist>

<varlistentry>
<term><parameter moreinfo="none">gfarm:...</parameter></term>
<listitem>
<para>
Gfarm URL で指定します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><parameter moreinfo="none">file:...</parameter></term>
<listitem>
<para>
ローカルファイルシステム上のパスを URL で指定します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><parameter moreinfo="none">任意</parameter></term>
<listitem>
<para>
ローカルファイルシステム上のパスを絶対パスまたは相対パスで指定します。
そのパスが gfarm2fs のマウントポイントの場合は、
gfarm2fs を経由せずに Gfarm からコピーします。
</para>
</listitem>
</varlistentry>

</variablelist>
</refsect1>

<refsect1 id="source-path"><title>DESTINATION PATH</title>
<para>
<parameter moreinfo="none">destination-path</parameter>
には以下を指定できます。
</para>

<variablelist>

<varlistentry>
<term><parameter moreinfo="none">gfarm:...</parameter></term>
<listitem>
<para>
ディレクトリを Gfarm URL で指定します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><parameter moreinfo="none">file:...</parameter></term>
<listitem>
<para>
ローカルファイルシステム上のディレクトリを URL で指定します。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><parameter moreinfo="none">hpss:...</parameter></term>
<listitem>
<para>
HPSS 上に存在するディレクトリを URL で指定します。
その下に <parameter moreinfo="none">source-path</parameter>
と同名のディレクトリが存在する場合はエラーになります。
HPSS に対して差分コピーはできません。
hpss:. や hpss:dir のように相対パスで指定することもできます。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><parameter moreinfo="none">任意</parameter></term>
<listitem>
<para>
ローカルファイルシステム上のディレクトリを絶対パスまたは相対パスで指定します。
そのパスが gfarm2fs のマウントポイントの場合は、
gfarm2fs を経由せずに Gfarm へコピーします。
</para>
</listitem>
</varlistentry>

</variablelist>
</refsect1>

<refsect1 id="options"><title>GFPCOPY OPTIONS</title>
<para>
以下は <command moreinfo="none">gfpcopy</command> 専用のオプションです。
</para>
<variablelist>

<varlistentry>
<term><option>-b</option> <parameter moreinfo="none">bufsize</parameter></term>
<listitem>
<para>
コピー時に使用するバッファサイズを指定します。
</para>
<para>
標準は 64 キビバイト (64 * 1024) です。
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><option>-f</option></term>
<listitem>
<para>
-f オプションを指定する場合、コピー先のファイルとコピー元のファイルが、
サイズまたは mtime が異なる場合に上書きします。
</para>
<para>
-f オプションを指定しない場合、
コピー先のほうが mtime が古い場合に、上書きします。
</para>
</listitem>
</varlistentry>

</variablelist>
</refsect1>

<refsect1 id="common-options"><title>COMMON OPTIONS</title>
<para>

<command moreinfo="none">gfpcopy</command> には
<command moreinfo="none">gfprep</command> と共通のオプションがあります。
<command moreinfo="none">gfprep</command> のマニュアルを参照してください。
</para>
</refsect1>

<refsect1 id="examples"><title>EXAMPLES</title>
<para>
ディレクトリ以下すべてをコピーします。
</para>
<literallayout format="linespecific" class="normal">
$ gfpcopy gfarm:///dir file:///tmp/dir
</literallayout>
<literallayout format="linespecific" class="normal">
$ gfpcopy file:///tmp/dir gfarm:///dir
</literallayout>
<literallayout format="linespecific" class="normal">
$ gfpcopy gfarm:///dir1 gfarm:///dir2
</literallayout>
<literallayout format="linespecific" class="normal">
$ gfpcopy gfarm:///dir hpss:///tmp/dir
</literallayout>
<literallayout format="linespecific" class="normal">
$ cd /mnt/gfarm2fs
$ gfpcopy dir /tmp/dir
</literallayout>

 <para>
一つのファイルをコピーします。
</para>
<literallayout format="linespecific" class="normal">
$ gfpcopy gfarm:///dir/file file:///dir
</literallayout>
<literallayout format="linespecific" class="normal">
$ cd /mnt/gfarm2fs
$ gfpcopy file /tmp/dir
</literallayout>
</refsect1>

<refsect1 id="notes"><title>NOTES</title>
<para>
<command moreinfo="none">gfmd</command> と
<command moreinfo="none">gfpcopy</command> が距離的に離れている場合には、
<command moreinfo="none">gfpcopy</command> の動作が遅くなります。
そのような場合には、-j または -J オプションに大きな値を指定すると、
性能が改善するかもしれません。
</para>
</refsect1>

<refsect1 id="see-also"><title>SEE ALSO</title>
<para>
  <citerefentry>
  <refentrytitle>gfprep</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfreg</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfexport</refentrytitle><manvolnum>1</manvolnum>
  </citerefentry>,
  <citerefentry>
  <refentrytitle>gfarm2.conf</refentrytitle><manvolnum>5</manvolnum>
  </citerefentry>
</para>
</refsect1>

</refentry>
