如何从 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 循环。
我想检索一些应用程序的日志。
我发现命令 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 循环。