我有数千个未压缩的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不适用于我的情况。
答案 0 :(得分:1)
这是几个问题:
sed
的{{3}}不清楚,但 documentation 中的其他人说“不”,并提出替代方案)答案 1 :(得分:1)
几年前我不得不使用原始tar文件,这是我无法推荐的。有太多的“tar”格式,以确保您的替换正在执行您希望它做的事情,而仅您希望它做什么。
在我的情况下,我别无选择,我不得不使用emacs来编辑tar文件。这是某人的备份。
如果我遇到了您的问题,我会花时间编写一个小脚本/程序来提取和sed(1)
以避免可能(可能不太可能)的损坏存档。
此外,您可能必须以root身份运行以确保正确的权限和时间戳。