将根分区和 /home 复制到新的更大硬盘

将根分区和 /home 复制到新的更大硬盘

我准备买一个更大的硬盘,想把根目录复制到这个硬盘上。根分区是 20G。我想在新硬盘上把根分区变大。我还想把 /home 复制到新硬盘上一个更大的分区上。

  1. 我可以用来dd复制分区吗?或者有没有更好的方法来复制分区?

  2. 在复制分区之前我应该​​格式化新驱动器吗?

  3. 除此之外,我还需要做什么来sudo update-grub表明我将使用新的驱动器?

  4. 我知道这很主观,但我发现如果添加很多程序,20G 对于根分区来说有点小。40G 够大吗,还是更大的分区更好?

答案1

首先,让我们对新驱动器进行分区。由于它将成为系统中的第二个驱动器,因此我们只需按需要进行设置即可。如果您不确定分区的大小要求,请使用 LVM。(我不会在这里介绍它。)希望这会为您提供足够的指示,让您知道该怎么做。

  1. 除非您要制作与旧磁盘完全相同的副本(比如将磁盘交换到速度更快但大小相同的磁盘),否则不要使用dd。首先对新驱动器进行分区,然后格式化分区(例如 ext4)。然后可以使用以下命令完成实际复制:tar -c --one-file-system -f - . | (cd /newPartitionMountPoint/; tar -xvf -)
  2. 新驱动器:否,用于dd分区:否,之后parted:是(除非自动格式化分区)
  3. 好吧,当您更改之前存在的分区时,您还必须编辑/etc/fstab 使用blkid以查看新旧 UUID + 标签并相应地更改 fstab。如果您有/boot单独的分区,/dev/sda那就是大部分内容。
  4. 根分区的大小是主观的。实际上,我从未需要超过 20G 的分区root,但这意味着我有单独的分区/var/lib(如果需要数据库),/data用于我的一般数据需求,当然 /home

在 Linux 中移动硬盘系统比在 Windows 中更容易,但最困难的是移动“/”和“/boot”。我认为对您来说更简单的方法是检查您使用空间的位置:du -hsc /* 然后为最大的文件夹创建一个分区(例如/usr)/dev/sdb1 20G LABEL=myusr /dev/sdb2 100G LABEL=myhome

然后创建 usrtmp 文件夹并在那里同步旧 usr: 请注意,这是高级内容即使一切正常,也可能会破坏您的系统。基本上,如果你知道怎么做,那就去做吧。如果你不知道……那我就不会这么做……

mkdir /usrtmp
mount LABEL=myusr  /usrtmp
cd /usr
tar -c --one-file-system -f - . | (cd /usrtmp/; tar -xvf -)
# this might be dangerous so I would do it with livecd myself..
# If you're feeling risky do this:
cd /
mv /usr /usr_old && mv /usrtmp /usr
## Now you can edit /etc/fstab to mount LABEL=myusr to /usr
## if you forget this but you did the mv then you won't be able to use your system
## Reboot, if everything is okay, you can remove /usr_old
## Repeat the same for home, but change labels accordingly

相关内容