我退休了,但我曾经在一所大学教书。我应该销毁所有学生成绩记录(这是法律),但我只是注意到我的一堆备份中有我多年的学校主目录。这包括学生问题的解决方案和成绩。那些仍然解压的很容易,因为目录结构允许我放弃解决方案和等级。
tar 文件有点难,我想知道是否有办法让它变得简单——只需复制到另一个 tar 文件减去一些我可以用 grep 指定的东西。我想保留我的一些研究工作,所以我不想放弃整个事情。
幸运的是,所有这些东西都在磁盘上,而不是磁带上,但是我有很多磁盘,而现在我花了一天的大部分时间来挂载每个磁盘并使用 ls -lR 列出所有文件名。所以任何减少工作的事情都会受到欢迎。
我想不出一种方法来选择性地“仅复制 tar 文件的一部分”,而不涉及将存档提取到临时位置,删除不需要的文件,然后创建新存档。
但是,您可以复制整个存档,然后根据存档内容的过滤列表有选择地从中删除文件。例如,给定一个包含以下文件的 tar 存档:
然后
现在测试一个过滤器:
(您可以
tar --list
通过grep
过滤器输出更复杂的模式)。如果看起来没问题,那么检查结果
当然,
foo.tar
如果您愿意,您可以在原件上做同样的事情(如果删除出错,就没有机会重做)。请注意,包含换行符的文件名将失败;虽然
--files-from
可以读取一个以空分隔的列表,但据我所知,--list
不能发出一个。同样,--delete
可能仅适用于未压缩的档案 - 如果您的档案已压缩(foo.tar.gz
等foo.tar.xz
),那么您需要先解压缩。