【问题标题】:Ant, download fileset from remote machineAnt,从远程机器下载文件集
【发布时间】:2012-08-24 21:02:24
【问题描述】:

据我所知,通过 scp 任务从远程机器下载文件时,ant 不提供“文件集”属性。从本地机器发送文件时它可以工作,但在远程机器上启动时它不起作用。那是来自文档。因此,在远程机器中,我在每个目录中都有一些文件夹和文件加载。我想从每个文件夹中下载所有文件夹和一个指定文件。下载所有文件然后删除不需要的文件将不是解决方案,因为有数千个文件。

所以。如何从远程机器的指定目录下载所有文件夹(只在磁盘上创建没有内容的文件夹),然后从远程机器的每个目录下载一个指定的文件并使用ant将其放到相应的文件夹中?

【问题讨论】:

    标签: ant download scp fileset


    【解决方案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>
    

    【讨论】:

    • 所以例如我有文件系统: dir1 ---file ---other dir2 ---file ---other dir3 ---file ---other dir4 ---file ---其他 dir5 ---file ---other 我希望 ant 下载并在我的磁盘上创建每个 dir*,并且只下载“文件”到每个 dir 它会工作吗?第二件事。我的主题stackoverflow.com/questions/12192339/… 不是重复的。链接下的主题是关于获取文件夹名称并将其保存在例如文本文件中。像 ls > temp.txt 这样的东西。没有可下载的东西...(我被禁止提问,可能主要是因为它。)
    • Soooo.. 在我的情况下,我不需要对密钥做任何事情,我只是调用了信任属性设置为 true 的 ssh 任务并且它有效。问候。
    • @user15683854875644328975643872 ANT ssh 任务的 trust="true" 属性与身份验证无关。我怀疑您还指定了“用户名”和“密码”属性。
    • 用户名和密码是基本的东西。添加信任属性是额外的。
    • @user15683854875644328975643872 你错过了我的意思。使用 SSH 密钥可以避免指定用户名和密码。相反,密钥用于向远程服务器进行身份验证。最重要的是,您避免将密码硬编码到脚本中。真正的偏执狂会生成带有密码短语的 SSH 密钥,并使用 ssh-agent 将密钥缓存在内存中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2016-05-24
    • 2022-11-24
    • 2011-12-16
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多