恢复主目录的步骤?(用户 ID 等)

Mar*_*tin 6 installation backup users home-directory

假设我有一个home.tgz并且想把它放在一个新安装的 ubuntu 盒子上。

在解压文件之前我需要做什么?创建用户?用户 ID 呢?团体?加密呢?

Cry*_*vok 4

  1. 创建用户帐户,可以选择使用与之前相同的 UID 和 GID,并且主目录位于同一位置(例如/home/sid
  2. 设置密码
  3. 将文件解压到用户的主目录中
  4. 如果您没有使用与以前相同的 UID 和 GID,请更改所有权
  5. 将用户添加到所需的任何其他组

如果您想简化流程,您需要做几件事。下面我假设用户名为mark

  1. 记录用户的组成员身份:cd ~mark && id mark > mark.identity
  2. 从其父目录备份主目录 - 例如,如果是,/home/mark那么您会想要cd /home && tar jcpf mark.tar.bz2 mark
  3. 在新主机上将其恢复到 /home ( cd /home && tar xjpf mark.tar.bz2)
  4. 识别组和用户名以及组成员身份,然后恢复它们。这应该是非常可编写脚本的,大致类似于:
#!/bin/bash
用户=“${1}”
如果 [ !-e "${USER}".身份]; 然后
  echo "没有身份文件"
  出口
菲

GD=`awk '{ print $2 "${USER}".identity }' | sed -e "s/.*(//g" -e "s/).*//g"`
GLIST=`awk '{ print $NF "{USER}".identity }' | sed -e "s/[az]*=//g" -e "s/[0-9]*(//g" -e "s/)//g"`

对于 ${GD} ${GLIST} 中的 GROUP;做
  获取组 ${GROUP} >/dev/null
  状态=${?}
  如果 [ ${STATUS} -ne 0 ]; 然后
    组添加${GROUP}
  菲
完毕

useradd -g "${GD}" -G "${GLIST}" "${USER}"

请注意,我只是在这里写的,我还没有测试过。


是的,它假设所有组都存在。扩展脚本来检查每个组是否存在并在不存在时创建它并不困难。上述更改应该可以解决这个问题。

另请注意,这不会处理通过 sudo 获得的特权。如果您有本地电子邮件或其他任何东西,它也无济于事。它要做的就是为用户设置与以前相同的组。另外,如果目录已经存在,它会覆盖它,因此需要注意。


inv*_*ert 0

在我的测试虚拟机中,我添加了 bob (1001) 和 alice (1002)。我删除了 bob 并添加了 joe (1001)。对不起我错了。您只需将每个用户的主文件夹所有者和组重新分配给每个用户即可。

这可能看起来很乏味,但这只是 3 个步骤的详细解释。

您需要超级用户权限来执行这些维护任务,因此我们在每个命令前面加上 前缀sudo,这给了我们这些权限。

在我们新安装的 Ubuntu 上:

  • #1 创建用户帐户:sudo adduser alice
  • #2 将备份的文件解压到她的新主目录中
  • #3 使 alice 成为文件的所有者:sudo chown -R alice\:alice /home/alice

解释一下命令:

  • #1 adduser 为我们创建 /home/alice 目录(除其他外)
  • #3 该选项-R意味着递归地应用所有权,alice\:alice 是我们为文件指定新文件的方式owner\:group,并且我们告诉 chown 在 上执行此任务/home/alice

现在 /home/alice 下的所有文件都将属于她,她访问她的文件应该没有问题。希望这更有意义。

创建同名的新用户帐户,然后它将具有与旧用户帐户相同的 UID。我记得在某处的邮件列表上读过它,但我找不到阅读它的来源。