0

私が読んだように、scpタスクを介してリモートマシンからファイルをダウンロードするとき、antは「fileset」属性を提供しません。ローカルマシンからファイルを送信する場合は機能しますが、リモートマシンで起動する場合は機能しません。それはドキュメントからです。したがって、リモートマシンでは、すべてのディレクトリにいくつかのフォルダとファイルのロードがあります。すべてのフォルダとすべてのフォルダから1つの指定されたファイルをダウンロードしたいと思います。何千ものファイルがあるため、すべてのファイルをダウンロードしてから不要なファイルを削除しても解決策にはなりません。

それで。リモートマシンの指定されたディレクトリからすべてのフォルダをダウンロードし(コンテンツなしでディスク上にのみ作成)、リモートマシンのすべてのディレクトリから指定されたファイルを1つダウンロードし、antを使用して対応するフォルダに配置するにはどうすればよいですか?

4

1 に答える 1

1

指定していないので、ローカルシステムとリモートシステムはUNIXベースであり、rsyncとsshをサポートしていると思います。

よりクロスプラットフォームのソリューションは挑戦的です...

SSHを構成する

SSHキーを生成します(空のパスフレーズを指定します)。

ssh-keygen -f rsync

これにより、秘密鍵と公開鍵に対応する2つのファイルが生成されます。

|-- rsync
`-- rsync.pub

リモートサーバーに公開鍵をインストールします

ssh-copy-id -i rsync.pub user@remote

ssh秘密鍵を使用して認証し、パスワードなしのログインを実行できることをテストします。

ssh -i rsync user@remote

「ダウンロード」ターゲットはrsyncを呼び出して、リモートファイルシステムツリーをローカルにコピーします。必要に応じて、rsyncの除外を追加で指定できます(rsyncドキュメントを参照)。

<project name="rsync" default="download">

    <target name="download">
        <exec executable="rsync">
            <arg line="-avz -e 'ssh -i rsync' user@remote:/path/to/data/ data"/>
        </exec>
    </target>

    <target name="clean">
        <delete dir="data"/>
    </target>

</project>
于 2012-08-30T22:26:35.110 に答える