Linux

“dd”實用程序複製超出預期

  • March 18, 2019

我剛買了一個ssd來更換目前的硬碟。因此,我決定使用“dd”實用程序複製整個 750 GB 分區(當然使用了大約 76 GB 的一部分)。但是,我輸入了這個命令:

sudo dd if=/dev/sda5 of=/dev/sdb1

(因為我提到的分區被定義為“sda5”……)我期待它完全複製這 76 GB,但它完成了複製那部分;此外,is’s 仍然保持複製其他 674 GB 為空。我沒想到會有這個結果。當我輸入sudo pkill -USR1 -n -x dd命令時,它說:“505029096+0 中的 505029097+0 記錄複製了 258574897152 字節(259 GB),39871,3 s,6,5 MB/s” 所以,如果有人可以向我解釋這種情況,我會很滿意的。

如果您不指定 bs 和 count 選項,則 dd 將複製整個分區/dev/sda5。這是因為 dd 是一個非常低級的工具,它無法區分文件和空白空間。因此,要僅複製分區的完整部分, dd 不是您需要的工具,因為即使您指定了大小,也沒有理由實際數據應該位於可用空間的開頭。

如果您只想複製使用過的數據,則應調整分區大小/dev/sda5。首先將 750 分區的大小調整為另一個略高於 76GB 的分區,該分區幾乎已滿。要調整分區大小,可以使用gpartedorfdisk命令。調整大小後,您可以在新分區上以標準方式使用 dd 。

您還可以/dev/sda5通過 gzip 執行分區來壓縮分區。之後,您可以使用 dd 複製壓縮圖像,如下所示

dd if=/dev/sda5 | gzip > sda5.gz

然後

dd if=sda5.gz | gunzip > /dev/sdb1 

dd 實用程序應將指定的輸入文件複製到指定的輸出文件,並使用特定的輸入和輸出塊大小進行可能的轉換。

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/dd.html

您的文件或驅動器的完整副本也是如此dd,並且無法檢測哪些段已使用,哪些未使用。為此,我會推薦類似 (G) Parted的東西。

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