Dd

將數據移動到分區的開頭

  • April 3, 2020

我打算將數據從 2Tio 驅動器移動到 SSD,只有 120Gio。該驅動器只有一個分區,並且僅包含 16Gio 之類的。為了確保在使用 ddrescue 傳輸時得到所有數據,我想確保所有數據都在分區的開頭。有什麼工具可以做到這一點?;)

如果ddrescue涉及,則表明源驅動器並不完全健康。在這種情況下,您不應該在複製之前以任何方式修改源驅動器,因為這可能會使問題變得更糟。

只有當源磁碟是健康的,並且源磁碟上的文件系統類型支持壓縮文件系統時,你才可以先這樣做。

文件系統類型在這裡很重要:對於 ext2/ext3/ext4 文件系統,您可以確保解除安裝resize2fs <partition device containing the filesystem> 20G要縮小的文件系統,然後執行以將文件系統的大小縮小到 20 GiB。如果無法執行該操作,該命令將返回錯誤而不進行任何更改。如果操作成功完成,則保證所有數據都在問題分區開始的 20 GiB 範圍內。然後,您可以調整分區的大小,最好是 21 GiB 或更大,以避免由於舍入錯誤而切斷文件系統的尾部。成功複製文件系統後,您可以resize2fs不使用 size 參數自動調整文件系統的大小以完全匹配分區的目前大小。

其他文件系統類型有自己特定的大小調整工具:resize2fs僅特定於 ext2/ext3/ext4 系列文件系統。

據我所知,目前沒有任何生產級工具來縮小 XFS 文件系統,無論是線上還是離線。

ddrescue將嘗試從源到目標進行精確的、一對一的複制:這是它的工作。如果您執行它以將所有內容從 2 TiB 驅動器複製到 120 GiB 驅動器,您將獲得源磁碟前 120 GiB 左右的精確副本。

如果在源磁碟上創建文件系統後唯一要做的就是將 16 GiB 的數據傳輸到其中,我會說通常很有可能所有數據都完全包含在前 120 GiB 中,但是這取決於文件​​系統類型和它使用的塊分配方法。

但是,如果在將 16 GiB 數據複製到其中之前,該文件系統曾經包含 120 GiB+ 的其他數據,那麼即使稍後刪除其他數據,目前數據的 16 GiB 也可能位於距離起始位置超過 120 GiB 的位置。磁碟。

引用自:https://unix.stackexchange.com/questions/577662