将数据移至分区开头

将数据移至分区开头

我要将数据从 2Tio 驱动器移动到 SSD,只有 120Gio。该驱动器只有一个分区,仅包含 16Gio 左右。为了确保在使用 ddrescue 传输时获得所有数据,我想确保所有数据都位于分区的开头。有什么工具可以做到这一点吗?;)

答案1

如果ddrescue涉及,则表明源驱动器运行状况不佳。在这种情况下,您不应在复制之前以任何方式修改源驱动器,因为这可能会使问题变得更糟。

除非源磁盘运行状况良好,并且源磁盘上的文件系统类型支持收缩文件系统,您可以先执行此操作。

文件系统类型在这里很重要:对于 ext2/ext3/ext4 文件系统,您可以确保卸载要收缩的文件系统,然后运行将resize2fs <partition device containing the filesystem> 20G文件系统的大小收缩到 20 GiB。如果操作不可能,该命令将返回错误而不进行任何更改。如果操作成功完成,则可以保证所有数据都在从相关分区开始算起的 20 GiB 范围内。然后,您可以调整分区的大小,最好调整为 21 GiB 或更大,以避免由于舍入错误而切断文件系统的尾部。成功复制文件系统后,您可以在resize2fs不使用大小参数的情况下自动调整文件系统的大小以完全匹配分区的当前大小。

其他文件系统类型有自己特定的大小调整工具:resize2fs仅特定于 ext2/ext3/ext4 系列文件系统。

据我所知,目前还没有任何生产级工具可以收缩 XFS 文件系统,无论是在线还是离线。

ddrescue将尝试从源到目标进行精确的、一对一的复制:这就是它的工作。如果运行它将所有内容从 2 TiB 驱动器复制到 120 GiB 驱动器,您将获得源磁盘前 120 GiB 左右的精确副本。

如果在源磁盘上创建文件系统后对源磁盘所做的唯一事情是将 16 GiB 的数据传输到其中,那么我想说通常很有可能所有数据都完全包含在前 120 GiB 中,但是这取决于文件系统类型及其使用的块分配方法。

但是,如果在将 16 GiB 数据复制到文件系统之前,文件系统曾经包含 120 GiB+ 的其他内容,即使后来删除了其他数据,当前的 16 GiB 数据可能距离起始位置还远超过 120 GiB。磁盘。

相关内容