実際のサイズはほんの数MBしかありませんが、「見かけのサイズ」には約1GBのシステムイメージスパースファイルがあります。 (バグなしで)ブロックデバイスに効率的に書き込もうとしています。私が試したがうまくいかなかったいくつかの回避策は次のとおりです。
dd if=sparse_file of=/dev/some_dev
穴を含むファイル全体を処理すると、最終的に次のような結果が表示されます。1007869952 bytes (1,0 GB) copied, 22,0301 s, 45,7 MB/s
cp --sparse=always sparse_file /dev/some_dev
数MBが長い時間(〜13秒)かかるため動作しないようです。ddrescue --sparse --force sparse_file /dev/some_dev
メッセージで失敗するddrescue: Only regular files can be sparse.
(注:対処する内容と反対の方向に機能する)ここ)。
他に2つの方法がありますここしかし、私は単にLinuxディストリビューションの標準ツールを使用したいと思います。
それでは、ブロックイメージにスパースファイルを書き込んで穴をスキップする方法はありますか?
ベストアンサー1
このツールCで書かれた内容が役に立ちます。標準的なツールではありませんが、非常にシンプルでコンパイルしやすいです。
そうですね。cp
ブロックデバイスへのスパース出力はサポートされていません(マンページで確認済み)。