gpt4 book ai didi

linux - 无需创建中间文件即可高效传输控制台数据、tar 和 gzip/bzip2

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:16 26 4
gpt4 key购买 nike

Linux 环境。因此,我们有这个程序“t_show”,当使用一个 ID 执行时,将在控制台上写入该 ID 的价格数据。没有其他方法可以获取此数据。

我需要在两台服务器之间复制 ID 1-10,000 的价格数据,使用最小带宽和最小连接数。在目标服务器上,数据将是每个 ID 的单独文件,格式为:

<id>.dat

像这样的东西是冗长的解决方案:

目的地:

files=`seq 1 10000`
for id in `echo $files`;
do
./t_show $id > $id
done
tar cf - $files | nice gzip -c > dat.tar.gz

来源:

scp user@source:dat.tar.gz ./
gunzip dat.tar.gz
tar xvf dat.tar

也就是说,将每个输出写入其自己的文件、压缩和 tar、通过网络发送、提取。

问题是我需要为每个 id 创建一个新文件。这会占用大量空间并且无法很好地扩展。

是否可以在不创建中间文件的情况下将控制台输出直接写入(压缩的)tar 存档?有什么更好的想法(也许直接通过网络写入压缩数据,跳过 tar)?

正如我在目标服务器上所说,tar 存档需要将每个 ID 提取为一个单独的文件。

感谢所有花时间提供帮助的人。

最佳答案

您可以只发送以某种方式格式化的数据并在接收方解析它。

发件人上的 foo.sh:

#!/bin/bash
for (( id = 0; id <= 10000; id++ ))
do
data="$(./t_show $id)"
size=$(wc -c <<< "$data")

echo $id $size
cat <<< "$data"
done

在接收器上:

ssh -C user@server 'foo.sh'|while read file size; do
dd of="$file" bs=1 count="$size"
done

ssh -C 在传输过程中压缩数据

关于linux - 无需创建中间文件即可高效传输控制台数据、tar 和 gzip/bzip2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com