解決策 1:
昔、組み込みの Linux ディストリビューションで同様の問題に遭遇しました。イメージを圧縮する前に、ジャンクをすべて削除してください。
05
.死ぬまで待ってください。 asdf.txt を削除します。
デバイスのすべての空き領域にゼロを書き込みました。
ディスク イメージを取得し、gzip で実行します。出来上がり、まばらな画像です。
おそらくうまくスケーリングできず、実際にディスクに書き込む必要がある場合に問題が発生する可能性がありますが、ちょっと。
ディスクの rsync スナップショットを別のボリュームに取得し、そのボリュームをゼロにしてから、そのディスク イメージを取得できます。
注:SSD にとって危険な場合があります。ユーザーはこの操作をコミットする前に考慮する必要があります。
解決策 2:
13
を保存したいとします。 26
まで そしてあなたはルートです:
38
44
を使用 あるいは単に:
54
未使用のブロックをゼロで埋めます。ファイルシステムが完全にいっぱいになるまで待ってから、次のようにします。
62
dd で画像を取得し、 conv=sparse を使用してオンザフライでゼロをパンチします。
79
圧縮を使用したい場合は、ゼロブロックは非常に圧縮可能であるため、dd でゼロをパンチする必要はありません:
dd if=/dev/sdxn | gz -c | dd of=/tgtfs/image.raw
PS:大量の書き込みが発生するため、フラッシュ メモリ ベースのストレージ メディア (つまり、ソース ファイル システムが SSD) で定期的にこれ (ファイル システムをゼロで埋める) はお勧めできません。 SSD に接続し、その寿命を縮めます。 (ただし、たまにデータを転送する場合は問題ありません)
解決策 3:
count オプションを指定して dd を使用してください。
あなたの場合は fdisk を使用していたので、そのアプローチを採用します。あなたの "sudo fdisk -l " が生成されます:
Disk /dev/sda: 64.0 GB, 64023257088 bytes
255 heads, 63 sectors/track, 7783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000e4b5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 27 209920 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 27 525 4000768 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 27 353 2621440 83 Linux
/dev/sda6 353 405 416768 83 Linux
/dev/sda7 405 490 675840 83 Linux
/dev/sda8 490 525 282624 83 Linux
注意すべき 2 つの点は、1) ユニットのサイズ、および 2) "End" 列です。あなたの場合、8225280 バイトに等しいシリンダーがあります。 "End" 列では、sda8 は 525 で終了します (つまり、525[ユニット]*16065*512 =~4.3GB)
dd は、オフセットの後に開始したり、特定のブロック数の後に停止したりするなど、多くのことを実行できます。 dd の count オプションを使用して後者を行います。コマンドは次のようになります:
sudo dd if=/dev/sda of=/your_directory/image_name.iso bs=8225280 count=526
ここで、-bs はブロック サイズ (fdisk が使用する単位を使用するのが最も簡単ですが、これらの単位で count オプションが宣言されている限り、どの単位でも使用できます)、count はコピーする単位の数です (注:最後のブロックをキャプチャするためにカウントを 1 増やします)。
解決策 4:
85
の間 free-disk-space を使用して 99
を使用します /101
数百 GB の 114
で実行されている空き領域のある巨大なディスクでは可能です。 ingは非常に遅いです-他の回答が指摘したように、 120
は言うまでもありません EOF まで SDD を呼び出します。
この状況に遭遇したときに私がしたことは次のとおりです。
-
lubuntu ライブ CD では
134
を使用 ディスクを可能な限り最小のサイズに「縮小」し、残りのスペースを未割り当てのままにする -
使用済み
141
高速圧縮イメージを作成します (言うまでもなく、生データを保存するのに十分なスペースがある場合 (または CPU の負荷を減らしたい場合) は、圧縮をスキップすることをお勧めします) - 使用済み
152
データを別のディスクにコピーして戻す - 使用済み
167
もう一度パーティションを「拡張」します
複数のパーティションで試したことはありませんが、宛先ディスクのパーティションテーブルが最初に作成され、パーティションに含まれるデータのみが 175経由でコピーされる場合、上記のプロセスを「パーティション」のコピーに適用できると思いますコード> - 読み取り/書き込みオフセット (
184
/193
206
のオプション 、それぞれ) が必要に応じて必要になります。
解決策 5:
できません。 216
は非常に低レベルのツールであり、ファイルと空のスペースを区別する手段がありません。
一方、空のスペースは非常にうまく圧縮されるため、書き込み時間などではなく、ストレージ スペースのみを気にする場合は、gzip を介してパイプするだけです。