使用 tar 提取档案但跳过未更改的文件

使用 tar 提取档案但跳过未更改的文件

我有一个夜间解压大约 40 GB 大文件的过程,tar.gz如下所示:

tar -xzf latest-backup.tar.gz

此步骤大约需要 10 分钟,尽管通常档案中只有少数文件发生了变化。我看到tar有一些选项可以处理现有文件,例如--skip-old-files

--skip-old-files
    don't replace existing files when extracting, silently skip over them

不幸的是,这也会跳过已更改的文件,并且tar似乎不支持检查文件更改。我是否遗漏了什么,或者真的无法提取大型档案而只能“应用更改”?

答案1

我正在尝试做同样的事情。该-d操作将仅报告存档和文件系统之间发生了哪些更改。您可能必须使用此信息仅提取指定的文件。这涉及一些 shell 脚本。或者您可以提取到 tmp 目录中,然后使用 rsync 从 tmp 更新到 targetdir。以下是一个例子:

tar -zdf foo-1.8.0.tar.gz | grep 'Size differs' | sed 's/: Size differs//' | xargs tar -zxf foo`enter code here`-1.8.0.tar.gz

您可能还需要考虑以下文件修改时间不同。您还可以查看选项--日期之后--newer-mtime对于 tar。

相关内容