提取存储在 tar 存档中的文件的先前版本

Posted

技术标签:

【中文标题】提取存储在 tar 存档中的文件的先前版本【英文标题】:Extract a previous version of file that is stored within a tar archive 【发布时间】:2013-10-03 10:35:12 【问题描述】:

我有一个 tar 文件,其中包含同一文件的不同版本,我如何提取该文件的先前版本(不是最新版本)?

以下是创建测试 tar 文件的方法:

创建一个测试目录

tal@backup:~/tmp$ mkdir test

创建一个测试文件

tal@backup:~/tmp$ echo line 1 > test/test.txt

创建包含测试文件的 tar 文件

tal@backup:~/tmp$ tar -cvf test.tar test/*

返回

test/test.txt

检查更改

tal@backup:~/tmp$ tar -dvf test.tar test/*

返回(还没有)

test/test.txt

更改测试文件

tal@backup:~/tmp$ echo line 2 >> test/test.txt

检查更改

tal@backup:~/tmp$ tar -dvf test.tar test/*

返回(魔术:文件已更改)

test/test.txt
test/test.txt: Mod time differs
test/test.txt: Size differs

更新 tar 文件

tal@backup:~/tmp$ tar -uvf test.tar test/*

返回

test/test.txt

检查更改

tal@backup:~/tmp$ tar -dvf test.tar test/*

返回(两个版本都存在)

test/test.txt
test/test.txt: Mod time differs
test/test.txt: Size differs
test/test.txt

谢谢, 塔尔

【问题讨论】:

【参考方案1】:

已解决:

--occurrence=n

n - [0 .. 版本数]

0 - 最后一个(默认) 1 .. 版本号 - 是实际的版本号 如果 n 大于版本数,则会出错

示例

tar -xvf test.tar --occurrence=1 test/test.txt

谢谢, 塔尔

【讨论】:

以上是关于提取存储在 tar 存档中的文件的先前版本的主要内容,如果未能解决你的问题,请参考以下文章

提取 tar 存档,不包括特定文件夹及其内容

bash:仅提取 tar.gz 存档的一部分

linux压缩命令压缩和提取文件

使用 Perl 从巨大的存档中提取单个

从存档中提取精确文件的快速方法

如何在旧版本的旧 .tar.gz 存档之上重新构建新代码?