如何将Linux主目录移动到另一个驱动器

是否要将您的Linux主文件夹移动到另一个驱动器?这里有一个简单而循序渐进的方法,它应该适用于任何发行版。移动你的主文件夹意味着你可以重新安装Linux,而不必担心你的个人文件。

为什么要将您的主文件夹分开?

如果您正在设置新计算机或向现有计算机添加硬盘,您可能希望将主目录放在默认位置以外的驱动器上。

现代个人电脑的一种日益流行的配置是,使用一个装有操作系统的中型固态硬盘(SSD)和一个较大的固态混合硬盘(SSHD)或传统硬盘(HD)作为数据的主要存储。或者,您的系统中可能只有一个传统硬盘,而您添加了一个新的硬盘来增加存储空间。不管您出于什么原因,下面是移动主目录的简单快速浏览。

顺便说一句,如果您正在从头开始安装Linux系统,您可能会看到一个选项,用于在Linux发行版的安装程序中创建一个单独的主目录。通常,您只需要进入分区选项,创建一个单独的分区,并将其挂载到“/home”。但是,如果您已经安装了Linux发行版,则可以使用这些说明将当前主目录移动到新位置,而不会丢失任何内容或重新安装操作系统。

现在,在我们开始之前,先去备份一下。

相关:如何备份您的Linux系统

识别驱动器

如果您刚刚将驱动器安装到Linux计算机上,或者将Linux安装到新的多驱动器计算机的其中一个驱动器上,然后重新启动,那么几乎没有证据表明新驱动器存在。

fdisk命令将为我们列出驱动器及其分区。

sudo fdisk -l

滚动浏览输出,直到识别出新驱动器。第一个驱动器名为/dev/sda,第二个驱动器名为/dev/sdb,依此类推,最后一个字母每次都在增加。因此,/dev/sde将是系统中的第五个硬盘。

在本例中,新驱动器是安装到系统中的第二个驱动器。因此,我们需要查找与/dev/sdb对应的条目。

上面突出显示了/dev/sdb。您会注意到,它上面没有一条描述分区的线。这是一个全新的硬盘,所以现在还不会有。我们需要创建分区。我们可以使用fdisk来完成此操作。如果您的硬盘不是/dev/sdb,请确保在命令中用新硬盘的实际驱动器标识符替换/dev/sdb。

sudo fdisk /dev/sdb

当fdisk提示您输入命令时,按字母p。这将打印硬盘的分区表。我们知道它不会有,但我们得到了一些关于驱动器的有用信息。这给了我们一个很好的机会来确保我们要为其创建分区的驱动器是我们想要使用的驱动器。

它告诉我们该驱动器是一个1TB的驱动器,这与我们在此测试机器中的预期相符,因此我们将继续。

创建分区

按字母n表示新分区,然后按p表示主分区。当系统要求您输入分区号时,请按数字1。

我们将为整个磁盘创建单个分区,因此当提示输入第一个扇区时,我们可以按Enter键接受默认值。然后,系统将提示您输入最后一个扇区,输入将接受默认值。

尽管fdisk确认它已经创建了一个1TB的Linux分区,即1号分区,但硬盘上还没有任何变化。在您向fdisk发出将更改写入驱动器的命令之前,驱动器保持不变。一旦您确定对我们的选择感到满意,请按字母w将更改写入驱动器。

该分区已写入/dev/sdb。我们来看看刚才发生了什么。我们将在/dev/sdb上再次使用fdisk。

sudo fdisk /dev/sdb

按字母p打印该分区表,您将看到现在为该驱动器列出了一个分区。因为它是该驱动器上的第一个分区,所以名为/dev/sdb1。第二个分区将称为/dev/sdb2,依此类推。

我们不想对分区进行任何更改,因此按字母Q退出。

在分区上创建文件系统

我们需要在分区上创建一个文件系统。这可以通过mkfs命令轻松实现。请注意,您必须在命令中包括分区号。注意键入/dev/sdb1(分区),而不是/dev/sdb(驱动器)。

sudo mkfs -t ext4 /dev/sdb1

将为您创建文件系统,并且您将返回到命令提示符。

挂载新驱动器

要使用新驱动器,我们必须将其上的分区挂载到文件系统中的挂载点。实际上,准确地说,我们既不是挂载驱动器,也不是挂载分区,而是通过将文件系统移植到系统的文件系统树上,将文件系统挂载到分区上。

/mnt点是一个和任何地方一样好的地方。它只是一个临时装载点,允许我们将数据复制到新驱动器。我们将使用mount命令在/dev/sdb的/mnt上的第一个分区上挂载文件系统。

sudo mount /dev/sdb1 /mnt

如果一切正常,您将返回到命令行,没有错误消息。让我们看看是否可以将目录切换到新挂载的文件系统。

cd /mnt

是的,我们可以。让我们看看这里有什么。

ls -ahl

我们在我们的新文件系统中。默认的“Lost+Found”目录不是必需的,因此我们可以将其删除。

sudo rm -rf lost+found

正在复制您的主文件夹

我们需要将旧主目录中的所有内容复制到新挂载的文件系统中。使用r(递归)和p(保留)选项将确保复制所有子目录,并保留文件所有权、权限和其他属性。

sudo cp -rp /home/* /mnt

复制完成后,使用ls查看一下,并验证您的数据是否在新文件系统中预期的位置。换句话说,如果/mnt是您的主目录,那么所有内容都存在并且正确吗?

lsls dave

您可能想要比我们在本文研究的测试机器上做得更全面一些。作为安全网,我们将重命名并保留您的旧/home目录,直到您满意删除它是安全的为止。

sudo mv /home /home.orig

我们将创建一个新的空的主目录。

sudo mkdir /home

我们将使用那个新的空主目录作为新硬盘上文件系统的挂载点。我们需要从/mnt卸载它,然后在/home上重新挂载它。注意,命令umount在“u”之后没有“n”。

sudo umount /dev/sdb1sudo mount /dev/sdb1 /home/

相关:Linux目录结构,解释

测试您的新主目录

让我们看看/dev/sdb1分区现在有哪些属性:

df /dev/sdb1

我们将看到文件系统的名称、分区的大小、已用空间和可用空间,以及重要的是它的挂载位置。它现在是我们的/home目录。这意味着我们应该能够像引用旧的/home目录一样引用它。

如果我们移动到文件系统中的某个任意点,我们应该能够使用~代字号快捷方式改回/home。

cd /cd ~pwdlscd /homelscd davelsls -a

我们可以使用显式命令和~快捷键在文件系统中来回移动到/home。我们期望的文件夹、文件和点文件都存在。一切看起来都很好。

如果缺少任何内容,我们可以将其复制到/home.orig目录之外,我们仍然可以在文件系统的根目录中访问该目录。但是一切看起来都很好。

现在,我们需要在每次启动计算机时自动挂载/dev/sdb1。

编辑fstab

“fstab”文件包含系统引导时将要挂载的文件系统的描述。在我们对其进行任何更改之前,我们将对其进行备份,以便在出现问题时可以返回。

sudo cp /etc/fstab /etc/fstab.orig

现在我们可以编辑fstab文件了。

sudo gedit /etc/fstab

您必须在文件底部添加一行以挂载我们的新/home目录。*如果您的驱动器和分区标识符与本例中使用的不同,请用这些标识符替换此处显示的/dev/sdb1。

在行首键入分区名称,然后按Tab键。 键入挂载点/home,然后按Tab键。 键入ext4的文件系统描述,然后按Tab键。 键入装载选项的默认值,然后按Tab键。 键入文件系统转储选项的数字0,然后按Tab键。 键入数字0表示文件系统检查选项。

保存fstab文件。

重新启动系统

我们需要重新启动,以验证一切都按计划进行,并且您可以无缝连接到新的/home目录。

如果没有,您仍然拥有原始/home目录和fstab文件的安全网,如果需要,可以恢复它们。由于我们采取了预防措施-复制/home目录和fstab文件-您可以轻松地将系统恢复到启动前的状态。

sudo reboot now

相关:如何使用命令行重新启动或关闭Linux

最终检查

当您的系统重新启动时,让我们检查一下/home目录是否真的在您的新硬盘上,并且您的系统没有以某种方式(奇迹般地)恢复到使用旧的/home目录。

df /dev/sdb1

太好了,它装在家里了。任务完成。

完全确定不再需要旧/home目录的安全副本后,可以将其删除:

cd /sudo rm -rf home.orig/

当然,如果您确实意识到有些东西没有从旧/主目录复制到新/主目录,您将能够从我们开始之前创建的备份中检索到它。

还是自己的家好

现在您已经将/home目录与操作系统分区的其余部分分开,您可以重新安装操作系统,并且您的数据将保持不变。您所要做的就是编辑fstab文件,将第二个驱动器挂载到/home上。

因为您的所有点文件都在您的/home目录中,所以当您启动各种应用程序时,它们会找到您的所有设置、首选项和数据。

它消除了重新安装的痛苦,降低了升级的风险。

相关文章