Dd
dd 需要將每個輸入塊放大/填充到兩倍大小
我發現了一些聲稱這一點的範例,但我無法設法讓 dd 將具有給定塊大小的文件轉換為該塊大小的兩倍。
dd if=disk256bytesectors.img of=disk512bytesectors.img cbs=256 ibs=512 obs=512 conv=sync
我的磁碟 img 大小為 10 兆字節,我期待一個 20 兆字節的新映像,但沒有。
所以我需要發生的是將每個 256 字節塊轉換為 512 字節塊,每個 512 字節塊的後半部分為空、零、空格或任何內容。
dd 手動狀態 conv=sync
在轉換和輸出之前用空字節填充任何比 ibs 短的輸入塊到該大小。
但是輸入塊永遠不會比它自己短?!?!那是什麼意思?
無論如何,我該怎麼做?
當您為命令指定時,您可能可以使用
socat
which 使用 Unix 域套接字。exec:
這可以由數據報 (type=2
) 類型構成,以確保 dd 的輸入僅為 256 個字節。例如,對於每個數據報的 2 個字節 (
-b2
) 填充為 4 (bs=4
):$ echo abcdefx | socat -u -b2 - exec:'dd bs=4 conv=sync',type=2 | od -c 0000000 a b \0 \0 c d \0 \0 e f \0 \0 x \n \0 \0
請注意,上述對標準輸入的管道的使用
socat
僅用於此測試。通常,您應該直接在標準輸入上提供輸入文件,以便socat
輕鬆讀取所需大小的整個“塊”-b
(即<file socat -u ...
)。