我有一个夜间解压大约 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。