Disk-Image

使用 dd 進行複製 - 非分區空間是否被認為與文件系統中的空白空間相同以獲得生成的圖像大小?

  • October 23, 2020

注意:所有=我發現的所有

所有“使用 dd 複製”資訊都在談論 dd 如何複製所有“空白空間”,但實際上所有著作似乎都在響應文件系統填滿整個磁碟的情況。

如果我有兩個分區加起來只佔 160G 磁碟的 10%,情況會怎樣?良好的“dd if=/dev/sda of=disk.img”執行的映像大小是多少:16G 或 160G?

除非我是盲人,否則使用 DD 進行磁碟複製沒有此資訊。

sda是整個磁碟 - 160 GB

sda1是該磁碟上的第一個分區 - 8 GB(比如說)

sda2是該磁碟上的第二個分區 - 8 GB(比如說)

如果您只想複製 16 GB 的文件系統數據,請使用ddonsda1sda2.

要將數據恢復到不同的磁碟,您必須首先對該磁碟進行分區(理想情況下與原始磁碟相同)。我希望您也可能必須重新安裝引導載入程序。

例如,參見http://www.backuphowto.info/linux-backup-hard-disk-clone-dd

首先我想回答你的問題:

我有兩個分區加起來只佔 160G 磁碟的 10% 的情況呢?執行良好的“dd if=/dev/sda of=disk.img”的圖像大小是多少:16G 還是 160G?

如果你在 /dev/sda 上執行 dd,即 160G 的整個磁碟 sda,那麼 disk.img 將是 160G,因為 dd 將只是一個一個地複制 sda 上的所有位。/dev/sda1 和 /dev/sda2 之後的空間是否分區沒有區別!不幸的是,如果硬碟以前是滿的數據,即使你嘗試壓縮disk.img,它也不會真正變小,因為實際上磁碟表面的“空白空間”並不是空的,而是包含先前使用的文件系統和數據的剩餘位。不過,我不知道以前從未使用過的全新硬碟是什麼情況!

除此之外,我想回答您對 RedGrittyBrick 的回答的評論。如果您的目標是製作最小尺寸的全磁碟映像,那麼可能的解決方案如下

  1. 使用空白空間創建第三個分區,在您的範例中:/dev/sda3。沒有必要(但也沒有危害)使用文件系統對其進行格式化,因為在下一步中分區將被零覆蓋,從而再次消除任何文件系統格式化
  2. 現在用零填充整個分區:dd if=/dev/zero of=/dev/sda3. 這將花費相當長的時間,並且 dd 沒有進度條,所以請耐心等待。在某些時候 dd 會報告磁碟已滿,然後一段時間後會退出並給出關於複製位的最終報告
  3. 如果您不希望此分區存在,您現在可以再次刪除它。零點將保留在磁碟表面!
  4. 現在按照您的計劃首先製作單個磁碟映像:dd if=/dev/sda of=disk.img. 順便說一句:正如許多其他論壇所報導的那樣,不需要任何進一步的 dd 參數,例如等。conv=notruncnotrunc 與我們在這裡想要做的事情(將磁碟複製到文件)**完全無關,**並且用於完全不同的事情(簡而言之:將數據插入到已經存在的文件中而不切斷

$$ =truncating $$如果新添加的數據比現有文件短,則現有文件的剩餘部分)。不要聽那些寫在將磁碟複製到文件時特別需要notrunc 的人,那是 100% 胡說八道 5. disk.img 將再次變為 160GB,這並不奇怪。但是現在和之前的不同是,如果你壓縮了disk.img,這一次它的大小幾乎和/dev/sda1和/dev/sda2的壓縮圖像的總和一樣大,因為剩餘的未分區磁碟表面將壓縮到幾乎沒有! 6. 好了,現在您有了整個磁碟的單文件全磁碟映像,但它幾乎只有 /dev/sda1 和 /dev/sda2 實際使用的數據區域的大小 7. 如果您還沒有創建 /dev/sda1 和 /dev/sda2,您也可以先用 dd 將零寫入整個磁碟 /dev/sda,或者使用磁碟擦除工具將零寫入整個磁碟磁碟等,然後只需創建 /dev/sda1 和 /dev/sda2。結果應該是一樣的

!最好的問候 地球上一位匿名的網際網路本地人

引用自:https://serverfault.com/questions/198940