Unix 如何以编程方式将文件添加到现有tar文件

Unix 如何以编程方式将文件添加到现有tar文件,unix,language-agnostic,tar,Unix,Language Agnostic,Tar,我有一个进程基于一些现有文件创建tar,然后我希望另一个进程获取该tar文件并向其中添加更多文件 这是如何通过编程实现的?文件中没有这样的文件夹。每个文件都可以有一个路径,因此tarfile可能包含 /some/path/foo /some/path/bar /another/path/baz 如果您有一个文件/everywhere/quartz,您希望将其作为/some/path/quartz添加到tar文件中,这将完成以下操作: tar -rvf tarfilename --transfo

我有一个进程基于一些现有文件创建tar,然后我希望另一个进程获取该tar文件并向其中添加更多文件


这是如何通过编程实现的?

文件中没有这样的文件夹。每个文件都可以有一个路径,因此tarfile可能包含

/some/path/foo
/some/path/bar
/another/path/baz
如果您有一个文件
/everywhere/quartz
,您希望将其作为
/some/path/quartz
添加到tar文件中,这将完成以下操作:

tar -rvf tarfilename --transform 's,.*/,/some/path/,' /elsewhere/quartz
(这将在GNU tar中起作用,我不能对其他版本做出承诺。)


单引号中的内容是一个正则表达式替换命令,大致上是“将所有内容添加到斜杠(尽可能多)并替换为
/some/path/

tar-r
附加到tar文件。您还需要什么?它可以将文件放置在tar文件中的特定位置吗?(假设存在某种文件夹结构)位置?您的意思是希望新文件
foo
/some/path/foo
的形式进入,或者希望它是tar文件中的第三个文件,或者希望它从tar文件的开头开始140kB?在tar文件中,有一个文件夹/some/path,我想添加一个以/some/pathWait为根的文件夹/foo/bar,什么?我刚刚在一个名为files.tar的tar上尝试了
tar-rf files.tar file2
,该tar中有一个名为file1的文件,当我删除这些文件和未修复的files.tar(
tar-xf files.tar
)时,我把这两个文件都恢复了。它还可以很好地处理目录。我看不出有必要采用那种过于复杂的解决方案。