単一のファイルシステムを含むループバックファイルがありますfs.image
。それを呼び出しましょう。複数のパーティションと複数のファイルシステムを含む別のはるかに大きなループバックファイルがありますdisk.image
。
fs.image
のパーティションの1つとまったく同じサイズdisk.image
です。データをdisk.image
ファイルから正しい場所にコピーしたいと思います。
適切なオフセットを計算するスクリプトがあり、これを実行しようとしますdd
。ブロックデバイスで機能するため、これが機能すると仮定しましたが、そうではありません。disk.image
書き込まれたばかりのデータの直後の位置で切り捨てられます。
dd
ファイルを切り捨てないようにする方法はありますか?
fs.image
はとして圧縮されfs.image.bz2
、実行中のコマンドは次のようになります。
bzcat fs.image.bz2 | dd of=disk.image bs=4M seek=$OFFSET
$OFFSET
計算されたオフセットはどこにあります。
私はこれを達成する他の方法を考えましたが、これは最も簡単なようです(うまくいった場合)。一度オプションを選択すると、別のファイルへの挿入ポイントまでデータをコピーし、ファイルシステムを追加し、最後に元のファイルの残りを追加します。ただし、実際には必要のない大量のデータをコピーするため、これは遅くなります。私は他のオプションを受け入れています。