我一直在尝试将 /var 移动到新分区,但数据消失了

我一直在尝试将 /var 移动到新分区,但数据消失了

我一直在尝试将 /var 文件夹移动到新分区。我正在使用 Debian 10.7 并拥有 8GB 处理器,因此我想节省空间。我尝试了几种方法,但部分数据似乎总是消失。这是我尝试过的:

  1. 创建新分区 /dev/sda7
  2. 将 /dev/sda7 挂载到 /etc/fstab 中的 /mnt/newvar
  3. 启动进入单用户模式
  4. 挂载/-rw -o 重新挂载
  5. cp -arpPv /var/* /mnt/newvar (当我检查 /mnt/newvar 文件夹时,它与 /var 文件夹大小相同,因此我假设副本工作正常,所有文件夹似乎都在那里)
  6. mv /var /var.old
  7. mkdir /var
  8. 编辑 /etc/fstab 并在 /var 上挂载 /dev/sda7
  9. 重新启动系统

当系统启动时,/var 中的几个文件夹是不可见的,但如果我启动到救援 USB,我可以从那里看到 /var 上的所有文件夹。我可以删除 /mnt/newvar 文件夹吗?和 /var.old 文件夹?如果我这样做,那么我似乎会永久丢失无法查看的文件夹/文件。我想将此文件夹移动到新分区,以使系统的其余部分只读并希望节省空间。如果我无法删除旧文件夹,那么使用不同的分区对此没有多大帮助。谁能告诉我为什么有些文件夹不可见以及如何防止永久丢失数据?

答案1

你能检查一下 中的符号链接/var吗?因为在某些情况下,这些链接的目的地不是特定的目录路径,而是相对路径。

例如,/var/run/指向/run/,这是/run中的目录/,但链接的目标可能是../run/,这是run链接父目录中的目录,而父目录仍然是root

但这也意味着,如果复制/var//mnt/newvar/,系统会在遇到链接指向的目录时查找名为run的父目录。newvar//mnt../run/

话虽这么说,任何涉及复制的操作都/var可能会导致奇怪的行为,所以我建议我的解决方案:/var在安装时将其直接安装到所需的分区。结果,你/etc/fstab可能看起来像这样

UUID=xxx /var            ext4    defaults        0       2

xxx 是您所需分区的 UUID,可以使用命令检索blkid

答案2

/var目录包含几个符号链接:-

  1. /var/lock/->/run/lock/

  2. /var/run/ ->/run/

我不认为该cp命令正在复制符号链接。

也许您需要重新创建它们?

在您连续几天无故障运行之前,我不会删除旧的 /var 数据。

相关内容