将 Linux 分区克隆到较小分区的最佳方法是什么?

将 Linux 分区克隆到较小分区的最佳方法是什么?

我目前有 80 GBRAID 0(是的,我知道,这就是我改变它的原因……)扩展Linux 设备还有 80% 的空闲空间,我想将其更改为 40 GBext4使用先前的 RAID 0 分区之一进行分区。我在另一个大分区上有足够的备用空间来存放所有文件,我认为进行切换的最佳方法是:

  1. cp -a文件系统上的所有文件都存放到一个大分区下的目录中
  2. 重新分区
  3. cp -a所有文件返回到新分区

问题是,我担心特殊文件属性(它是 Linux 根设备);将cp -a继续全部必要的文件属性,以便新分区之后可以启动?我是否错过了其他方法?

答案1

我会:

  1. 使用类似以下命令就地调整文件系统大小resize2fs -p /dev/<device_name_fs_is_on> 20G
    它无疑会拒绝第一次运行,建议您fsck先运行。您可以强制它运行,但fsck强烈建议执行此操作,因为尝试调整有错误(即使是小错误)的文件系统可能会导致灾难。检查完成后重新运行调整大小命令
  2. 将其复制到另一个驱动器dd if=/dev/<device_name_fs_is_on> of=/path/to/other/location/filesystem.img bs=1048576 count=20480
  3. 根据需要重新格式化磁盘
  4. 使用以下方法复制文件系统dd if=/path/to/other/location/filesystem.img of=/dev/<new_device_name>
  5. 调整大小以填充新分区resize2fs -p /dev/<new_device_name>
  6. 挂载新调整大小的文件系统并编辑其包含的任何相关配置,例如 /etc/fstab
  7. 您还需要检查您的 grub 配置以确保它引用了新的根分区名称,并且您可能需要重建您的 initrd(但可能不是,因为您是从 RAID 转为正常,而不是相反,如果 initrd 不支持 RAID,则会导致问题)
  8. 祈祷并重新启动...

由于这是您的根文件系统,您将需要从活动 CD 执行此操作,因为在安装文件系统时您将无法调整其大小(步骤 2)。

如果您更改步骤 1 中传递的 20G resize2fs,请确保dd相应地更改步骤 2 中传递的 1048576x20480。

显然,这不是一个没有风险的操作,因此您可能需要在步骤 3 之前通过其他方式单独备份文件系统上的重要数据和配置。
为了更安全:如果您有时间和多余的磁盘,请将缩小的文件系统恢复到额外的磁盘,按照步骤 6 和 7 进行适当的重新配置,并确保您可以在执行步骤 3 之前启动它。这样,您就知道在从旧位置擦除文件系统之前,您在其他地方拥有该文件系统的完整工作副本,并且如果您在此阶段发现问题,可以轻松恢复到旧设置并中止/重试。

这样你就不会输任何当您在文件系统上整体操作而不是单个文件、目录和设备节点时,复制内容时文件/目录/设备属性。

答案2

我从未使用过它,但有一个名为的分区映像程序,partimage可在系统救援光盘

我不确定如果您使用 partimage 会发生什么,但是如果您使用 cp(注意不要尝试复制您正在复制的目录,当您进行复制时可能需要复制cp -ax)您将必须重新安装 Grub,因为它对物理硬盘位置进行硬编码,而这些位置在复制过程中会发生变化。

相关内容