如何以编程方式向现有的tar文件中添加文件

3
我有一个进程根据一些现有的文件创建tar文件,然后我希望另一个进程将更多的文件添加到该tar文件中。这个如何通过编程实现?

tar -r 是向 tar 文件中追加内容的命令。您还需要什么? - Beta
它能在tar文件中的特定位置放置文件吗?(假设存在某种文件夹结构) - coffee
位置?你是指你想让新文件 foo 放在 /some/path/foo 中,还是想让它成为 tar 文件中的第三个文件,或者想让它从 tar 文件开头开始的 140kB 处开始? - Beta
在tar文件中,有一个名为/some/path的文件夹,我想要添加一个以/some/path为根目录的/foo/bar文件夹。 - coffee
1个回答

3

在tar文件中没有所谓的文件夹。每个文件都可以有一个路径,因此tar文件可能包含以下内容:

/some/path/foo
/some/path/bar
/another/path/baz

如果你有一个文件/elsewhere/quartz,想要将它作为/some/path/quartz添加到tar文件中,可以这样做:
tar -rvf tarfilename --transform 's,.*/,/some/path/,' /elsewhere/quartz

(这将适用于GNU tar,其他版本可能不适用。)

单引号内的内容是一个正则表达式替换命令,大致意思是“取斜杠之前的所有内容(尽可能多),并用/some/path/替换它”。


1
等等,什么?我刚刚在名为files.tar的tar文件上尝试了tar -rf files.tar file2,该文件中有一个名为file1的文件,当我删除这些文件并解压缩files.tar(tar -xf files.tar)时,我得到了两个文件。对于目录也可以正常工作。我不认为需要那种过于复杂的解决方案。 - Braden Best

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接