当前位置: 首页>>技术教程>>正文


如何更新 tar.gz 文件?

问题描述

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

最佳思路

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

\\n

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

\\n

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

# 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

次佳思路

解决方案/解决方法

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

  1. 从 .tar.gz 文件中提取 .tar 文件:\n gunzip filename.tar.gz

  2. 使用 tar -u 命令更新未压缩的 .tar 文件:\n tar -uf filename.tar new_file

  3. 压缩更新的 .tar 文件:\n gzip filename.tar

Speedup

如果您有 multi-core CPU,我建议使用 pigz 而不是 gzip 来提取和创建 .gz 文件。 ( pigzgzip 的 multi-threaded 实现)

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

相关手册

第三种思路

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

tar 文件可用的位置输入 vi

/home>vi

例如,如果你想修改 /home/test/ 目录下的 simple.tar.gz:

/home/test>vi

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12919.html,未经允许,请勿转载。