如何更新tar.gz文件?


Answers:


28

通常,您可以使用-u标志。从tar的手册页中:

 -u, --update
       only append files newer than copy in archive

因此,此序列将满足您的需求:

# 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

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


2
OP正在询问有关无法更新的压缩存档的更新。
QkiZ

18

解决方案/解决方法

您不能一步一步更新压缩的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

相关手册


5

如果您想更新一个特定的文件*.tar.gz文件,只要做到以下几点:

输入vi从何处tar文件可用

/home>vi

例如,如果要修改目录下的simple.tar.gz,则/home/test/

/home/test>vi

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


1

如果要重复执行此操作,则可以进行以下优化:

if [[ -f my.tar.gz ]]; then
    if [[ ! -f my.tar ]]; then
        echo 'No tar, unzipping tar.gz'
        gunzip my.tar.gz
    fi
    tar -uvf my.tar file1 file2 file_new
    gzip -fk my.tar  # This keeps a copy of the tar.
    # -f --force overwrite existing .tar.gz
    # -k --keep Keep the input file (.tar file)
else
    tar -cvzf my.tar.gz file1 file2
fi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.