我正在尝试以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所有权信息的同时手工挑选常规用户文件进行备份?我的目标是简单地解开/.
中的所有内容谢谢!
答案 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帐户,如果他们不在那里就恢复。因此,至少不需要在主目录上设置权限。但是对于那些子目录却不能这么说。