直接修改未压缩的tar文件

时间:2015-07-04 09:21:37

标签: linux unix archive tar corruption

我有数千个未压缩的tar文件,最多可累计1 TB的数据。现在我想修改一些tar文件中的一个特定字符串。

我是否可以在不提取tar文件的情况下直接执行此操作,例如用sed?当然我不想得到损坏的tar文件。

详细信息:

我要修改的字符串长度为4个字符。我可以用另外4个字符的字符串替换它吗? specification of a tar file似乎只包含tar文件中包含的每个文件的标头的校验和,以及每个文件的长度,因此将tar文件中包含的文件中的4个字符替换为其他4个字符应该没问题,对吗?

我是否可以用6个字符的字符串替换4个字符的字符串?在tar文件中似乎有一些填充,那么在添加2个字符时获取损坏的tar文件的概率是多少?提取对这样一个损坏的tar文件仍有效吗?

我没有嵌套的tar文件,因此this negative answer不适用于我的情况。

2 个答案:

答案 0 :(得分:1)

这是几个问题:

  • 你可以修改tar文件中的文件内容(可能,因为文件内容没有校验和)
  • 哪个工具有用(sed的{​​{3}}不清楚,但 documentation 中的其他人说“不”,并提出替代方案)
  • 可以用6个字符的字符串替换4个字符的字符串(可能不会,因为这会更改文件长度,这需要调整标题及其校验和)。

答案 1 :(得分:1)

几年前我不得不使用原始tar文件,这是我无法推荐的。有太多的“tar”格式,以确保您的替换正在执行您希望它做的事情,而您希望它做什么。

在我的情况下,我别无选择,我不得不使用emacs来编辑tar文件。这是某人的备份。

如果我遇到了您的问题,我会花时间编写一个小脚本/程序来提取和sed(1)以避免可能(可能不太可能)的损坏存档。

此外,您可能必须以root身份运行以确保正确的权限和时间戳。