1

我正在尝试以 root 身份备份机器的一些关键文件和目录,包括一些 /home 数据,手动挑选一些文件以减少 tarball 大小。在大多数情况下一切都很好,因为大多数文件都归根用户所有,但是说我只是试试这个:

# tar -cf backup.tar /home/user/file

当我恢复内容时, /home/user/file 正如预期的那样归用户所有,但 /home/user 归根用户所有。然而,我试过了,

# tar -cf backup.tar /home

在这种情况下,所有 /home 所有者都被保留。(请注意,我不需要 -p 标志,因为我是 root。我仍然尝试过......)

这是正常行为吗?如果是这样,有没有办法在保留 /home 所有权信息的同时手动选择常规用户文件进行备份?我的目标是简单地从 / 中解压所有内容。

谢谢!

4

1 回答 1

2

要正确设置目录的权限,tarball 需要包含这些目录的条目,因此您需要将它们添加到 tarball。

当您创建仅包含 而不包含 的 tarball 时,tarball 中/home/user/file没有/home/user有关权限的信息/home/user,因此tar不知道该怎么做。它会自动创建目录,但没有权限、所有者或组授予它们,因此它们获得默认值。

您也可以添加目录:

# tar -cf backup.tar --no-recursion /home/user /home/user/file

但这可能不会让您的事情变得更简单。注意--no-recursion- 告诉 tar 不要在目录下添加任何东西,只在目录本身。如果您还想实际添加目录树,则必须find(1)手动将其传递给该目录下的每个文件。那会很快变得丑陋。

请记住,我们正在谈论备份和恢复特定文件。如果您要恢复,您可能还会创建要恢复的 unix 帐户(如果它们不存在的话)。所以至少不需要在主目录上设置权限。但是,这些子目录的情况并非如此。

于 2012-04-06T12:01:55.473 回答