linux 更新压缩tar中的单个文件

igetnqfo  于 2023-08-03  发布在  Linux
关注(0)|答案(4)|浏览(169)

给定一个压缩的归档文件,如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开关可能有助于避免解压缩整个文件,但我不确定如何正确使用它。

8ulbf1ek

8ulbf1ek1#

我找到答案了
您不能将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之前),它显示正确。

gmol1639

gmol16392#

如果要更新的文件是文本文件。然后你可以使用vim编辑器直接打开包含文件的tarball并打开它,就像使用vim编辑器打开文件夹一样。然后修改文件,保存并退出。
但是,如果文件是二进制文件。我不知道解决办法。

ryoqjall

ryoqjall3#

在我的情况下,我必须删除文件,然后添加新文件,步骤如下:
我的tar文件

file.tar
└── foo.json
└── bar.json
└── dir
    └── zoo.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.tar foo.json # add the specific file foo.json to file.tar

压缩文件:

如果它是压缩文件,如file.tar.gz,您将需要使用gunzip file.tar.gz从压缩文件(在本例中为gzip)中提取tar文件,这将为您创建tar文件file.tar。然后你就可以做上面的步骤了。
end**,你应该使用gzip file.tar再次压缩tar文件,这将为你创建名为file.tar.gz的压缩文件

子目录:

为了处理子目录,你必须在文件系统中保持相同的结构:

tar -x -f file.tar dir/zoo.json
# now modify the file dir/zoo.json as you want ...
tar --delete -f file.tar dir/zoo.json
tar -uf file.tar dir/zoo.json

查看文件结构:

通过使用less命令,您可以查看文件的结构:

less file.tar

drwxr-xr-x root/root         0 2020-10-18 11:43 foo.json
drwxr-xr-x root/root         0 2020-10-18 11:43 bar.json
drwxr-xr-x root/root         0 2020-10-18 11:43 dir/zoo.json

gcuhipw9

gcuhipw94#

在Windows上,您可以使用7zip直接在存档中编辑文件。只需在7zip中打开存档,导航到文件并打开它。它应该在默认的系统文本编辑器中打开(如果没有/未知的文件扩展名,则会给予您一个打开对话框)。进行更改,然后保存,然后7zip会询问您是否要将更改保存到存档中的文件,您会说是。然后,当你关闭7zip时,它会再次要求你保存对整个存档的更改,你也应该说是。应更新存档修改日期,并且您始终可以以相同的方式再次打开它以检查是否保存了更改。我知道这适用于tar.gz和zip存档,但我还没有尝试过其他人。

相关问题