Apache Ant 1.6以降
SSHデーモンが動作している(リモート)マシンとの間で、ファイルまたはFileSetをコピーします。FileSetは、ローカルマシンからリモートマシンへのファイルのコピーのみに有効です。
注意: このタスクは、Antディストリビューションに含まれていない外部ライブラリに依存しています。詳細については、ライブラリの依存関係を参照してください。このタスクは、jsch-0.1.2以降でテストされています。
sshexecタスクも参照してください
| 属性 | 説明 | 必須 |
|---|---|---|
| file | コピーするファイル。これは、ローカルパスまたは user[:password]@host:/directory/path の形式のリモートパスにできます。:password は、キーベース認証を使用している場合、またはpassword属性を指定している場合は省略できます。リモートパスを認識する方法は、@文字が含まれているかどうかです。localPath に @文字が含まれている場合、これは機能しません。 |
はい、ネストされた<fileset>要素が使用されていない場合 |
| localFile | これは、file属性の代替です。ただし、これは常にローカルファイルを指している必要があります。これが追加された理由は、file属性を指定すると、@文字が含まれている場合にリモートとして扱われるためです。この文字はローカルパスにも存在できます。Ant 1.6.2以降 |
file属性の代替 |
| remoteFile | これは、file属性の代替です。ただし、これは常にリモートファイルを指している必要があります。Ant 1.6.2以降 | file属性の代替 |
| todir | コピー先のディレクトリ。これは、ローカルパスまたは user[:password]@host:/directory/path の形式のリモートパスにできます。:password は、キーベース認証を使用している場合、またはpassword属性を指定している場合は省略できます。リモートパスを認識する方法は、@文字が含まれているかどうかです。localPath に @文字が含まれている場合、これは機能しません。 |
はい |
| localTodir | これは、todir属性の代替です。ただし、これは常にローカルディレクトリを指している必要があります。todir属性を指定すると、@文字が含まれている場合にリモートとして扱われるため、これが追加されました。この文字はローカルパスにも存在できます。Ant 1.6.2以降 |
todir属性の代替 |
| localTofile | 受信時にファイル名を指定された名前に変更します。単一のファイルを受信する場合にのみ役立ちます。Ant 1.6.2以降 | todir属性の代替 |
| remoteTodir | これは、todir属性の代替です。ただし、これは常にリモートディレクトリを指している必要があります。Ant 1.6.2以降 | todir属性の代替 |
| remoteTofile | 送信時にファイル名を指定された名前に変更します。単一のファイルを送信する場合にのみ役立ちます。Ant 1.6.2以降 | todir属性の代替 |
| port | リモートホストに接続するポート。 | いいえ; デフォルトは22 |
| trust | これをyesまたは trueに設定すると、不明なすべてのホストを信頼します。 注意: これを false(デフォルト)に設定した場合、接続するホストはknownhostsファイルにリストされている必要があります。これは、ファイルが存在することも意味します。 |
いいえ; デフォルトはno |
| knownhosts | リモートホストのIDを検証するために使用する既知のホストファイルを設定します。これはSSH2形式のファイルである必要があります。SSH1形式はサポートされていません。 | いいえ; デフォルトは${user.home}/.ssh/known_hosts |
| failonerror | 転送が失敗した場合にビルドを停止するかどうか。 | いいえ; デフォルトはtrue |
| password | パスワード。 | はい、キーベース認証を使用している場合、またはパスワードがファイルまたはtodir属性で指定されている場合を除きます。 |
| keyfile | 秘密キーを保持するファイルの場所。 | はい、キーベース認証を使用している場合 |
| passphrase | 秘密キーのパスフレーズ。 | いいえ; デフォルトは空の文字列 |
| sshConfig | OpenSSHスタイルの構成(例: ${user.home}/.ssh/config)を保持するファイルの場所。ユーザー名とキーファイルは、タスクパラメータでまだ指定されていない限り、構成ファイルから読み取られます。Ant 1.10.8以降 |
いいえ |
| verbose | SCPがユーザーに詳細な出力を表示するかどうかを決定します。現在、これはファイル転送の進行状況を示すドット/星の出力を意味します。Ant 1.6.2以降 | いいえ; デフォルトはfalse |
| sftp | SCPがsftpプロトコルを使用するかどうかを決定します。sftpプロトコルはSSH2のファイル転送プロトコルです。scp1をサポートしていないサーバーとの間でコピーする場合は、これをtrueに設定することをお勧めします。Ant 1.7以降 |
いいえ; デフォルトはfalse |
| preserveLastModified | ダウンロードしたファイルの最終更新タイムスタンプを保持するかどうかを決定します。リモートからローカルシステムへの転送時にのみ機能し、SSH2をサポートしていないサーバーではおそらく機能しません。Ant 1.8.0以降 | いいえ; デフォルトはfalse |
| filemode | 3桁の8進数文字列で、標準のUnix形式でユーザー、グループ、およびその他のモードを指定します。アップロードされたファイルにのみ適用されます。リモートファイルの実際の権限は、この設定とリモートサーバーのUMASKによって制御されることに注意してください。Ant 1.9.5以降。 |
いいえ; デフォルトは644 |
| dirmode | 3桁の8進数文字列で、標準のUnix形式でユーザー、グループ、およびその他のモードを指定します。アップロードされたディレクトリにのみ適用されます。リモートディレクトリの実際の権限は、この設定とリモートサーバーのUMASKによって制御されることに注意してください。Ant 1.9.5以降。 |
いいえ; デフォルトは755 |
| serverAliveIntervalSeconds | サーバーからデータを受信しなかった場合、タスクがサーバーからの応答を要求するメッセージを暗号化チャネルを通じて送信するまでのタイムアウト間隔を秒単位で設定します。Ant 1.9.7以降 | いいえ、デフォルトは0で、これらのメッセージがサーバーに送信されないことを示します |
| serverAliveCountMax | サーバーからメッセージが返信されないまま送信できるサーバーアクティブメッセージの数。serverAliveIntervalSecondsが0でない場合にのみ使用されます。Ant 1.9.7以降 |
いいえ; デフォルトは3 |
| compressed | 転送中に圧縮を有効にするかどうか。Ant 1.9.8以降 | いいえ; デフォルトはfalse |
FileSetまたはその他のリソースコレクションを使用して、コピーするファイルのグループを選択します。filesetまたはリソースコレクションを使用するには、todir属性を設定する必要があります。
Ant 1.9.7より前は、ネストされた要素として<fileset>のみがサポートされていました。
Ant 1.10.10以降
特定のAnt属性で直接サポートされていない、作成されたJSchセッションの構成設定を追加します。
| 属性 | 説明 | 必須 |
|---|---|---|
| key | 構成設定のキー。 | はい |
| value | 構成設定の値。 | はい |
単一のローカルファイルをリモートマシンにコピーする
<scp file="myfile.txt" todir="user:password@somehost:/home/chuck"/>
別々のpassword属性を使用して、単一のローカルファイルをリモートマシンにコピーする
<scp file="myfile.txt" todir="user@somehost:/home/chuck" password="password"/>
キーベース認証を使用して、単一のローカルファイルをリモートマシンにコピーする
<scp file="myfile.txt"
todir="user@somehost:/home/chuck"
keyfile="${user.home}/.ssh/id_dsa"
passphrase="my extremely secret passphrase"/>
単一のリモートファイルをローカルディレクトリにコピーする
<scp file="user:password@somehost:/home/chuck/myfile.txt" todir="../some/other/dir"/>
リモートディレクトリをローカルディレクトリにコピーする
<scp file="user:password@somehost:/home/chuck/*" todir="/home/sara"/>
ローカルディレクトリをリモートディレクトリにコピーする
<scp todir="user:password@somehost:/home/chuck/"> <fileset dir="src_dir"/> </scp>
ファイルのセットをディレクトリにコピーする
<scp todir="user:password@somehost:/home/chuck">
<fileset dir="src_dir">
<include name="**/*.java"/>
</fileset>
</scp>
ファイルのセットをリモートディレクトリに最終更新日の逆順でコピーする
<scp todir="user:password@somehost:/home/chuck">
<sort>
<reverse>
<date/>
</reverse>
<fileset dir="src_dir">
<include name="**/*"/>
</fileset>
</sort>
</scp>
セキュリティに関する注意: scpタスクでパスワードやユーザー名をハードコーディングすることは、深刻なセキュリティホールになる可能性があります。変数置換を使用して、コマンドラインにパスワードを含めることを検討してください。例:
<scp todir="${username}:${password}@host:/dir" ...>
次のコマンドラインでAntを起動する
ant -Dusername=me -Dpassword=mypassword target1 target2
少しはマシですが、ユーザー名/パスワードはUnixシステム上のすべてのユーザーに(psコマンド経由で)公開されます。最善のアプローチは、<input>タスクを使用するか、保護された.propertiesファイルからパスワードを取得することです。
Unixに関する注意: ファイルのアクセス許可は、ファイルのダウンロード時に保持されません。代わりに、デフォルトのUMASKアクセス許可で終了します。これは、現在のJavaランタイムでファイルアクセス許可をクエリまたは設定する手段がないことが原因です。アクセス許可を保持するコピー機能が必要な場合は、代わりに<exec executable="scp" ... >を使用してください。