私はこれを主張するいくつかの例を見つけましたが、ddが与えられたブロックサイズのファイルをそのブロックサイズの2倍に変換するように管理することはできません。
dd if=disk256bytesectors.img of=disk512bytesectors.img cbs=256 ibs=512 obs=512 conv=sync
私のディスクのimgサイズは10MBで、新しいイメージには20MBを期待していましたが、何もありません。
したがって、各256バイトブロックを512バイトブロックに変換する必要があり、各512バイトブロックの後半はnull、0、スペースなどになります。
dd手動状態遷移=同期
変換および出力の前に、ibsより短い入力ブロックをヌルバイトでこのサイズで埋めます。
しかし、入力ブロックは決して自分より短くはありませんか? ! ? !では、これはどういう意味ですか?
しかし、どうすればいいですか?
ベストアンサー1
コマンドに指定するときは、socat
Unixドメインソケットの使用を使用できます。 ddへの入力が256バイトになるようにexec:
データグラム()形式で設定できます。type=2
たとえば、データグラムごとに2バイト()が4()-b2
で埋められます。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
上記のstdinのパイプの使用は、socat
このテストにのみ適用されます。通常、必要socat
な-b
サイズ(たとえば)<file socat -u ...
の完全な「チャンク」を読み取ることができるように、標準入力に直接入力ファイルを提供する必要があります。