我同时启动 Ubuntu 16.04 和 Windows 8.1。Ubuntu 的所有程序都位于 SSD 上,Windows 的核心程序也位于其中的一个单独分区中。主用户Windows 文件夹(文档、下载等)位于单独的硬盘上。
我的 Ubuntu 空间不足。我想将它们移至/opt
硬盘/usr/local
。然而,我发现的所有关于此问题的问答都始于这样的假设:这些文件夹已经安装在不同的分区上,或者我可以格式化目标驱动器。但这两种情况对我来说都不成立。
我不记得我设置这台计算机时具体做了什么,但我知道硬盘可以从 Ubuntu 访问(并且位于/dev/sdb1
,安装在/media/steve/storage
)。我可以做我想做的事情吗?
答案1
您可以简单地链接到它:
移动
/opt
目录:sudo mv /opt /mnt/otherDisk/
创建到新位置的符号链接:
sudo ln -s /mnt/OtherDisk/opt /
您现在将拥有:
$ ls -ld /opt
lrwxrwxrwx 1 root root 5 Apr 6 14:23 /opt -> /mnt/OtherDisk/opt
正如 Rinzwind 在评论中正确指出的那样,如果您移动包含启动期间所需文件的目录,这可能会破坏您的系统。例如,您当然不想这样做/bin
。/opt
但应该没问题。
答案2
我赞成移动/home,但您可以做您想做的事情。
如果我理解正确的话,您有两个驱动器,一个装有 ubuntu(可能还有一些 Windows 内容),另一个装有 Windows 用户文件。您需要做的是缩小 Windows 分区(虽然我已经多次成功完成此操作,但调整分区大小可能会导致数据丢失,因此请备份数据),这样可以释放该驱动器上的空间。您可以使用 GParted 之类的程序来调整分区大小。完成后,您可以利用剩余空间创建一个新分区(也可以使用 GParted 完成)。然后,您需要将 /usr/local 和 /opt 的内容复制到新分区(我通常通过插入实时 CD 并挂载所有内容并复制来完成此部分)。最后,您需要编辑 /etc/fstab 并告诉它将 /usr/local 和 /opt 挂载到哪里。
上面给出的移动 /home 的步骤与上述链接相同,因此您可以按照该指南移动 /usr/local 和 /opt。您需要做的是先调整 Windows 分区的大小。
答案3
风险过程,数据可能丢失!进行备份
- 我刚刚在我的 raspberrypi 上使用过这种方法,它运行着不同的 Linux 操作系统(raspbian)。
- 在我的情况下,使用与文件夹相同的权限设置现有分区。这是唯一已安装到 /mnt/existingpartitionfolder/ 的分区。
- 使用 rsync 将 opt 的所有内容复制到现有分区文件夹 $sudo rsync -avX /opt/ /mnt/existingpartitionfolder/。现有分区文件夹中的现有数据将很快成为 opt 的一部分。
- 我祈祷我的符号链接相对于复制过程移动,并且没有链接到旧的 opt 位置。我相信 -l 可以做到这一点(包含在 -a 开关中),它们看起来还好吗???
- 将 /etc/fstab 条目从 /mnt/existingpartitionfolder 调整为 /opt
- 我在 /mnt/ 文件夹上运行了一个 nfs,因此我还调整了 /etc/exports 条目以指向 /opt,重启后它将是相同的逻辑位置。
- 重命名 /opt $ sudo mv /opt /optold (我的备份)
- $sudo 立即重启
- 一切都恢复完美和完整,现在只需要删除 /optold(删除备份,或将其移动到新的 /opt)如果需要空间,然后进行测试。
如果数据正在移动,则在其他顶级文件夹上执行此操作可能不起作用。可以通过将 HDD 放入另一台机器或运行 LIVE 磁盘来采取相同的方法。只需小心 fstab 中的 UUID 以及文件夹和文件的权限。如果启动顺序失败,很可能是 fstab 中的 UUID(大假设)。如果您需要复制整个磁盘,请使用 dd 命令。