dd を使用してストリームをディスクにコピーするループがあります。速度上の理由から、プロセス全体で「bs」を使用してより大きなブロックサイズを使用しています。ただし、ある特定の行では、'ibs' と 'obs' を使用する必要があります。これは、'seek' の場所が、他の場所で使用する 'bs' の倍数ではないためです。
私の質問は: dd または他のプログラム/Perl モジュールを使用して、「シーク」に使用されるものとは異なるブロックサイズを書き出す方法はありますか?
dd if=/dev/ram1 of=/dev/sdb1 seek=2469396480 ibs=1048576 obs=1 count=1
上記のように、生データは 1M ブロックで読み取られますが、バイト単位の粒度に基づいて特定の場所をシークする必要があるため、1 バイト セグメントで書き出す必要があります。これにより、書き込み速度が 1/100 になります。
回避策はありますか? または、dd を使用せずに Perl でこれを行う方法はありますか?
ありがとう、
ニック