如何使用 BASH 连接到 Tar?

如何使用 BASH 连接到 Tar?

长话短说

我正在处理包含 Base64 编码的 PNG 图像的 Tar 档案。我想使用 BASH (或其他有效的方法)连接到 Tar 的提取功能,在文件解压后将 PNG 图像从 base64 编码解码为标准 PNG 编码。一个简单的操作cat $input_file | base64 -d >$output_file就可以成功解码图像。

有没有办法可以连接到 tar -xf ,以便用户不必做任何(或最少的)额外工作来解码图像?

在里面GNU Tar 文档我发现实际上保留了一些变量来保存我希望挂钩到 Tar 程序执行中各个时刻的函数名称。但是,文档解释说,这些变量以及可设置来配置 Tar 的其他变量位于名为 backup-specs 的文件中。不幸的是,没有给出该文件的路径。此外,运行sudo find / -name backup-specs告诉我这个文件不存在于我的 Ubuntu 版本 13.04 系统上。

长话短说中未包含的背景信息

我一直在开发基于浏览器(WebGL)的粒子效果创建应用程序(http://www.articleeffect.org), (https://github.com/cgrabowski/webgl-article-effect-editor), (https://github.com/cgrabowski/webgl-article-effect)。我已经开始编写一个仅客户端的解决方案,用于将效果数据保存和加载为 tar 存档。然而,由于客户端 JavaScript 处理二进制数据的能力有限,因此效果中用作纹理的图像以 Base64 编码保存。我已经能够将效果数据保存为 Tar 存档(尚未将其推送到 Github)。然而,除非从 Base64 编码中解码,否则无法操作所述 Tar 存档中的图像。

答案1

您想使用以下--to-command选项tar

tar xf tarfile.tar --to-command='sh -c "mkdir -p $(dirname $TAR_FILENAME) && base64 -d > $TAR_FILENAME"'

这在手册中有描述这里

backup-specs是手册声称随 一起分发的备份系统的一部分tar,但是我的系统缺少这个,我认为实际上没有使用它,至少不再使用它。

相关内容