如何从 Diego 上的 Cloud Foundry 拉取文件

How to pull files from Cloud Foundry on Diego

我想检索一些应用程序的日志。 我发现命令 cf file 不再可用,插件 cf-download doesn't work on Diego Architecture 不再可用。 有没有办法通过 CLI 或其他方法从云铸造厂检索文件?

解决方法是使用SSH without cf CLI

当您处于第 4 步时,您可以使用 WinSCP(对于 Windows)有一个图形界面来在文件夹中导航。

一个更简单的解决方案是使用 cf ssh 通过 stdout 传输。

比如你想把/home/vcap/logs下的所有文件都直接传输你可以这样做...

更新: 这是没有 for 循环的更简单和更快的版本,仅使用 tar:

cf ssh <APP> -i <INSTANCE> -c 'tar cfz - logs/*.log' | tar xfz - -C .

在我的例子中,这会在不到 20 秒的时间内传输 1 GB 的日志文件。

原回答:

#!/bin/sh
mkdir -p logs
for f in $( cf ssh <APP> -i <INSTANCE> -c 'ls logs/*' ); do
    cf ssh <APP> -i <INSTANCE> -c "cat $f" > $f
done

在我的设置中,传输 1.3GB 的日志文件大约需要 11 分钟。

使用 gzip 压缩将其缩短为 5 分钟(替换 for 循环中的行):

    cf ssh <APP> -i <INSTANCE> -c "cat $f | gzip -c" | gunzip > $f

很确定这可以使用 tar 进行优化并摆脱 for 循环。