有没有办法在不破坏的情况下提取`tar`

H2O*_*aCl 14 tar

有没有办法tar提取而不破坏?

我正在安装 12.04 并希望从 10.10 恢复我的数据。我想保留的任何特定于 12.04 的内容,即我不希望tar提取 'd 10.10 版本。如果我进行一般恢复,诸如 .bashrc 之类的文件将被破坏。有没有办法避免这种情况?

编辑:我会注意到启动的 12.04 ISO 磁盘映像允许从 10.10(或其他)升级并提供保留旧数据。我试过了,但它抱怨升级后某些应用程序可能会损坏。我决定重新启动并进行全新安装。

Rin*_*ind 17

我很难理解您想要什么,但是如果您制作了整个系统的 tar 文件,我相信您制作了一个非常大的 tar 文件,除非您完全恢复该 tar 文件,否则它没有真正的用途。如果您想保存自己的文档,您应该对这些文档进行备份,别无其他。

在说 tar 有几个漂亮的选择之后......

--keep-old-files
Run Code Online (Sandbox Code Playgroud)

这不会覆盖现有文件。

--keep-newer-files 
Run Code Online (Sandbox Code Playgroud)

这将使所有具有较新时间戳的文件保持原样。

--no-overwrite-dir
Run Code Online (Sandbox Code Playgroud)

这将使现有目录的元数据保持原样。

可在此处找到 tar 手册

但我建议在另一种介质上提取 tar 文件并手动恢复这些文件。这是最安全的方法。

  • 即使使用--keep-newer-files 和--no-overwrite-dir,将旧的完整系统备份提取到新系统上也会使您的系统处于混乱状态,因为许多不应该存在的文件将被提取。您应该使用 file-roller 在 gui 中打开存档并将您想要的特定文件提取到您的主目录。 (4认同)
  • @Rinzwind,你说得对,我的档案设计有问题。许多排除项但仍然没有足够的排除项,因此恢复是一团糟且危险,因为它会被 Maverick 覆盖到 Precise 上。我的下一个存档将严格包含在内。您关于手动恢复的建议很好。 (2认同)

Lek*_*eyn 10

焦油(1)

 -k, --keep-old-files
       don't replace existing files when extracting
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很清楚。如果 tarball 中的文件相对于您的旧 homedir 存储:

tar xvkf backup.tar.gz -C ~
Run Code Online (Sandbox Code Playgroud)