【问题标题】:Does `tar /home/user/file` change the /home owner to root?`tar /home/user/file` 是否将 /home 所有者更改为 root?
【发布时间】:2012-04-06 11:46:50
【问题描述】:

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

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

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

# tar -cf backup.tar /home

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

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

谢谢!

【问题讨论】:

  • 这与编程无关。这更适合超级用户或 unix stackexchange 网站。

标签: linux tar


【解决方案1】:

要正确设置目录的权限,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 帐户(如果它们不存在的话)。所以至少不需要在主目录上设置权限。但是,它们的子目录就不是这样了。

【讨论】:

  • 谢谢!我认为这应该有效。只是一个说明:据我所知,我只能 cp -a /tarred/dir/* / after 创建用户帐户,这正是破坏目录所有权的操作。如果我在它之前尝试过它会拒绝 useradd -m.
  • 你让我更深入地了解手册页......看起来使用 --no-overwrite-dir 恢复也有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2020-10-12
  • 2023-02-18
  • 2012-11-11
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多