我要將資料從 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。