如何更新 tar.gz 文件?

xpa*_*nta 38 tar

我创建了一个 tar.gz 文件(使用 GUI,而不是命令行)。如何使用添加新文件和更新修改文件的命令来更新它?

roa*_*dmr 34

您通常会为此使用 -u 标志。从 tar 的手册页:

 -u, --update
       only append files newer than copy in archive
Run Code Online (Sandbox Code Playgroud)

所以这个序列会做你需要的:

# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
Run Code Online (Sandbox Code Playgroud)

有关更详细的外观,请参见此处:http : //www.gnu.org/software/tar/manual/html_node/how-to-update.html

  • OP 询问更新无法更新的压缩存档。 (6认同)

and*_*tim 26

解决方案/变通方法

您无法一步更新压缩的 TAR 存档 ( .tar.gz )。但是,如果您有足够的可用空间,您可以这样做:

  1. .tar.gz文件中提取.tar文件:

    gunzip filename.tar.gz

  2. 使用以下命令更新未压缩的.tar文件tar -u

    tar -uf filename.tar new_file

  3. 压缩更新的.tar文件:

    gzip filename.tar

加速

如果您有多核 CPU,我建议使用pigz而不是gzip用于提取和创建.gz文件。(pigz是 的多线程实现gzip)

只需将gzip/gunzip命令替换为pigz/ unpigz

相关手册


小智 7

如果要更新文件中的特定*.tar.gz文件,只需执行以下操作:

vitar文件可用的地方输入

/home>vi
Run Code Online (Sandbox Code Playgroud)

例如,如果您想修改位于以下目录下的simple.tar.gz/home/test/

/home/test>vi
Run Code Online (Sandbox Code Playgroud)

在空编辑器中输入:n simple.tar.gz并按下Enter 您将获得文件夹和文件列表,将光标移动到您要修改的位置并单击Enter。它将显示vi特定文件的编辑器。然后i选择更改文件。更改成功后。按Esc键,选择:wq写入并退出文件。然后使用:q出来的文件列表。