`tar / home / user / file`是否将/ home所有者更改为root?

时间:2012-04-06 11:46:50

标签: linux tar

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

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

当我恢复内容时,/ home / user / file符合用户的预期,但/ home / user由root拥有。然而,我试过了

# tar -cf backup.tar /home

并且在这种情况下保留所有/房主。 (注意我不需要-p标志,因为我是root。还是我试过了......)

这是正常行为吗?如果是这样,有没有办法在保留/ home所有权信息的同时手工挑选常规用户文件进行备份?我的目标是简单地解开/.

中的所有内容

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

您也可以添加目录:

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

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

请记住,我们正在讨论备份和还原特定文件。如果你要恢复,你可能会创建unix帐户,如果他们不在那里就恢复。因此,至少不需要在主目录上设置权限。但是对于那些子目录却不能这么说。