更新压缩tar中的单个文件

时间:2010-06-02 08:55:59

标签: linux tar

鉴于压缩归档文件,例如application.tar.gz,其中包含application/x/y/z.jar文件夹,我希望能够使用我最新版本的z.jar并更新/刷新用它存档。

除了以下内容之外,有没有办法做到这一点?

tar -xzf application.tar.gz
cp ~/myupdatedfolder/z.jar application/x/y
tar -czf application application.tar.gz

我理解tar中的-u开关可能有用,以避免解开整个事情,但我不确定如何使用它。

3 个答案:

答案 0 :(得分:21)

好吧,我找到了答案。

您无法将tar -u与压缩存档一起使用。所以我使用的解决方案如下。请注意,为此,我将z.jar文件移动到我在当前名为application/x/y的目录中创建的文件夹中。

gzip -d application.tar.gz
tar -uf application.tar application/x/y/z.jar
gzip application.tar

当我执行tar -tf application.tar时(在更新之后,在gzip之前)它正确显示。

答案 1 :(得分:6)

如果要更新的文件是文本文件。然后,您可以直接使用vim编辑器打开包含该文件的tarball并将其打开,就像使用vim编辑器打开文件夹一样。然后修改文件并保存并退出。

但是,如果文件是二进制文件。我不知道解决方案。

答案 2 :(得分:0)

就我而言,我必须按照以下步骤操作 我的tar文件看起来像这样:

file.tar
└── foo.json
└── bar.json

并且我只想修改/更新foo.json文件而不提取并重新创建整个tar文件file.tar,这是命令:

tar -x -f file.tar foo.json # extract only foo.json file to my current location
# now modify the file foo.json as you want ...
tar --delete -f file.tar foo.json # delete the foo.json file from the file.tar
tar -uf file.ta foo.json # add the specific file foo.json to file.tar

如果是file.tar.gz,则必须将-z添加到tar命令中