web-dev-qa-db-ja.com

Cloud Foundryでアプリケーションのすべてのファイルをダウンロードすることは可能ですか?

アプリケーションのファイルをローカルPCにダウンロードすることはできますか?つまり、「プッシュ」とは逆の操作を実行できますか?

13
user626528

この簡単なスクリプトを使用して、アプリ内のすべてのログファイルをダウンロードします。これを微調整して、アプリフォルダー内のすべてのコンテンツを取得できます。

    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
7
Maaz Khan

アプリケーションが正常にステージングを終了した(つまり、ビルドパックが実行されて終了した)限り、CFによってビルドされたドロップレットをダウンロードできるはずです。これには、とりわけアプリケーションコードが含まれます。

例:

$ 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.htmlhttp://v3-apidocs.cloudfoundry.org/version/3.50.0 /#download-package-bits

更新(10/2/2019)

必ず--outputcf curlフラグを使用してください。 cf curlの出力をファイルにリダイレクトするだけでは、ドロップレット(または他のダウンロード)の終わりに余分な行末文字が表示されます。バイナリダウンロードの場合、これは問題を引き起こす可能性があります。一部のツールはtarのような余分な文字を単に無視しますが、cf Push --dropletを使用してドロップレットをアップロードすると、アプリが失敗します。


更新(2018年7月13日)

cf localもあります。これは、いくつかのことを行うcfcliプラグインです。それができることの1つは、ドロップレットを簡単にエクスポートおよびインポートすることです。これを行うには、おそらくこれが最も簡単な方法です。

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

10
Daniel Mikusa

最近のバージョンのcfCloud Foundryのコマンドラインインターフェイス )では、ダウンロードプラグインを使用してこれを簡単にしています。 https://github.com/ibmjstart/cf-download

http://blog.ibmjstart.net/2015/05/22/cf-download/ の著者の1人からの詳細

編集Dharmiが指摘しているように、これはDiegoバックエンドでは機能しません https://github.com/ibmjstart/cf-download/issues/12

9
xverges

了解。私も同じ問題を抱えていました。最も簡単な方法は、SCP overSSHです。

これをできるだけ簡単にするために、次の手順を実行します。

結局のところ、あなたはすでに「Cfcli」をあなたの環境にインストールしていると思います。方法をご覧ください: 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 blablaのようになります

> cf enable-ssh app-name

あなたは本当にアプリ名を知りたいです!それは基本です...

ステップ2-サーバーホストを取得する

ええと... sshホストとは何かを説明する必要がある場合は、ここからロールバックする方がよいでしょう。そうでない場合は、コマンドを実行します(ちょっとした冗談):

cf curl/v2/info

"app_ssh_endpoint": "ssh.MY-DOMAIN.com:2222"

結果は、多くの属性を持つjsonです。 「app_ssh_endpoint」というフィールドをコピーします。 「:」の後に、Winscpフォームまたはターミナルコマンドに入力するsshポートがあることを確認してください。

ステップ3-ユーザー名を連結します

ユーザー名は "cf:" + "[〜#〜] guid [〜#〜] "+"/"+"InstanceID "。

GUIDターミナルコマンドを実行するには:

cf app MY-AWESOME-APP --guid

次のような長いIDを返します:abcdefab-1234-5678-abcd-1234abcd1234

インスタンスIDは、アプリインスタンスの連番です。最初のアプリインスタンスは「」になります。

したがって、ユーザー名としてcf:my-guid-result/0があります。

ステップ4-一時パスワードを取得する

このステップでは、1回の使用パスを取得します。これは!パスは1回だけ使用します。 Buuuut ...サーバーに接続したり、コマンドを実行したりするたびに、このコマンドを実行できます。

パスを取得するには、ターミナルコマンドを実行します。

cf ssh-code

小さなパスワードを返す:abcdefab

この後、私はお勧めします:

私のような「app /」フォルダ全体をダウンロードしたい場合は、これを圧縮して、winSCPグラフインターフェイスを使用するか、「scp」コマンドを使用して端末からダウンロードしてください。

これは直感的ではありませんが、実行することは可能です。幸運を祈ります。

1
Adriel O.S.

私はこれを書いたRubyしばらく前に要点、それはまだ少しの微調整で、またはそのままで動作するはずです。

https://Gist.github.com/danhigham/470571

0
Dan Higham