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


12

tar没有提取方法而不会造成破坏?

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

编辑:我会注意到,启动的12.04 ISO磁盘映像允许从10.10(或任何版本)升级,并且它可以保留旧数据。我尝试了此操作,但是它抱怨某些应用程序在升级后可能会损坏。我决定重新启动并进行全新安装。

Answers:


14

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

在说tar有几个不错的选择之后...

--keep-old-files

这不会覆盖现有文件。

--keep-newer-files 

这将保留所有具有新时间戳的文件。

--no-overwrite-dir

这将保留现有目录的元数据。

tar的手册可以在这里找到

但是我建议将tar文件提取到另一种介质上,然后手动还原这些文件。这是最安全的方法。


3
即使使用--keep-newer-files和--no-overwrite-dir,将旧的完整系统备份提取到新系统上也会使您的系统处于混乱状态,因为会提取许多不应该存在的文件。您应该只使用文件滚动器在gui中打开存档,然后将所需的特定文件提取到主目录中。
psusi'4

我同意我在回答中的最后一行:)
Rinzwind

2
@Rinzwind,您是对的,我的档案文件设计有误。许多排除项仍然没有足够的排除项,因此恢复非常混乱且危险,因为这将是Maverick覆盖Precise的原因。我的下一个档案将严格包含。您关于手动还原的建议是一个很好的建议。
H2ONaCl

8

tar(1)中

 -k, --keep-old-files
       don't replace existing files when extracting

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

tar xvkf backup.tar.gz -C ~

压缩时是否也能正常工作
nyxee

@nyxee在尝试提取压缩存档时也可以使用(例如tar xvkzf backup.tar.gz -C ~)。如果您要创建新的archvie(tar czf foo.tar.gz foo/),我认为它不会被识别。
Lekensteyn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.