【问题标题】:Is it possible to download all files of an application in Cloud Foundry?是否可以在 Cloud Foundry 中下载应用程序的所有文件?
【发布时间】:2014-01-29 03:30:58
【问题描述】:

是否可以将应用程序的文件下载到我的本地PC,即执行与“推送”相反的操作?

【问题讨论】:

    标签: cloud-foundry


    【解决方案1】:

    只要您的应用程序成功完成暂存(即构建包运行并完成),您就应该能够下载由 CF 构建的 Droplet。其中将包含您的应用程序代码。

    例如:

    $ cf app <app-name> --guid
    2836d5fe-35f7-4409-b27b-4ed308152bb4
    $ cf curl /v2/apps/2836d5fe-35f7-4409-b27b-4ed308152bb4/droplet/download --output my-droplet
    

    另见https://apidocs.cloudfoundry.org/2.6.0/apps/downloads_the_bits_for_an_app.html & http://v3-apidocs.cloudfoundry.org/version/3.50.0/#download-package-bits

    更新(2019 年 10 月 2 日)

    确保使用cf curl--output 标志。如果您只是将cf curl 的输出重定向到一个文件,您最终会在您的Droplet(或其他下载)的末尾有一个额外的行尾字符。对于二进制下载,这可能会导致问题。有些工具会简单地忽略 tar 这样的额外字符,但如果您使用 cf push --droplet 上传 Droplet,则会导致您的应用失败。


    更新(2018 年 7 月 13 日)

    现在还有cf local,这是一个cf cli 插件,可以做几件事情。它允许您做的一件事是轻松导出和导入液滴。这可能是最简单的方法。

    https://github.com/cloudfoundry-incubator/cflocal

    【讨论】:

    • 我似乎没有可用的droplet 资源:{ "code": 10000, "description": "Unknown request", "error_code": "CF-NotFound" }跨度>
    • 试试这个。因为这会以 302 响应。并且 curl 没有遵循重定向。从 ~/.cf/config.json 找到您的访问令牌并执行 "wget --header='Authorization: your token' api.run.pivotal.io/v2/apps/7f4bb926-49d0-491b-a092-a06f1ddb7263/…
    • 下载此文件后,如何打开它?似乎没有以 .zip 的形式打开。
    • 这是一个存档,我不记得是 zip 还是 tar gzip。如果您运行file &lt;name&gt;,它会告诉您。或者,如果您使用的是 Windows,则可以尝试使用存档/提取应用程序打开它。它可能会检测到正确的格式。
    • 谢谢! curl 命令是在Diego 后端上唯一对我有用的东西。对我来说(在 Windows 7 上),下载的文件是一个 tar 球(所以,tar xvzf my-droplet 将提取文件)
    【解决方案2】:

    cf (Cloud Foundry's command line interface) 的最新版本通过使用 下载插件 使这变得更简单:https://github.com/ibmjstart/cf-download

    来自http://blog.ibmjstart.net/2015/05/22/cf-download/一位作者的更多详细信息

    编辑 正如 Dharmi 所指出的,这不适用于 Diego 后端 https://github.com/ibmjstart/cf-download/issues/12

    【讨论】:

    • 谢谢,效果很好,尽管听起来我的电脑要爆炸了。
    • 如果应用在 Diego 后端运行,cf-download 将无法工作。
    【解决方案3】:

    我使用这个简单的脚本来下载我的应用程序中的所有日志文件,您可以对其进行调整以获取应用程序文件夹中的所有内容

        mkdir -p <appName>/app/data/logs
        for i in `cf files <appName> app/data/logs | awk '{print $1}'`; 
        do cf files <appName> app/data/logs/$i > <appName>/app/data/logs/$i; done
    

    【讨论】:

    • 显然,这不再起作用(cf version 6.12.2-24abed3-2015-07-15T14:20:44+00:00)。我收到cf: 'file' is not a registered command. See 'cf help'
    【解决方案4】:

    好吧,伙计。我有同样的麻烦。最简单的方法是 SSH 上的 SCP。

    为了让这一切变得更简单,我提出了以下步骤。

    毕竟 我假设您已经在您的环境中安装了“Cf cli”。 看看如何在:https://docs.cloudfoundry.org/cf-cli/install-go-cli.html

    现在要登录 Cloud Foundry SSH,我们有一些事情要做:

    1. 在您的 IBM 应用程序中启用 ssh
    2. 获取 SSH 主机
    3. 获取用户
    4. 获取密码

    步骤 01 - 启用 SSH

    查看官方参考资料:https://docs.cloudfoundry.org/devguide/deploy-apps/ssh-apps.html

    打开CMD或终端写入:

    > cf login - 就像 bla bla bla

    > cf enable-ssh 应用名称

    您真的想知道应用名称!这是基础...

    第 2 步 - 获取服务器主机

    嗯...如果我必须解释什么是 ssh 主机,最好从这里回滚。如果没有,运行命令(小玩笑):

    cf curl /v2/info

    “app_ssh_endpoint”:“ssh.MY-DOMAIN.com:2222”

    Result 是一个具有许多属性的 json。 复制名为“app_ssh_endpoint”的字段。 看看“:”后面是填写Winscp表单或者终端命令的ssh端口。

    第 3 步 - 连接您的用户名

    用户名由“cf:”+“GUID”+“/”+“InstanceID”组成。

    要获取 GUID 运行终端命令:

    cf app MY-AWESOME-APP --guid

    返回一个长 id 像:abcdefab-1234-5678-abcd-1234abcd1234

    实例 ID 是您的应用实例的序号。第一个应用实例变为“0”。

    所以我们有 cf:my-guid-result/0 作为用户名。

    第 4 步 - 获取临时密码

    此步骤检索单次使用通行证。这是!您只能使用一次通行证。 Buuuut...您可以在每次连接到服务器或执行命令时执行此命令。

    要通过运行终端命令:

    cf ssh 代码

    返回小密码:abcdefab

    在此之后我推荐:

    如果你想像我一样下载整个“app/”文件夹,压缩它并使用winSCP图形界面或终端使用“scp”命令下载。

    这并不直观,但可以做到。祝你好运。

    【讨论】:

      【解决方案5】:

      我不久前写了这个 Ruby Gist,它应该仍然可以通过一些小的调整或按原样工作..

      https://gist.github.com/danhigham/4705713

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多