「ディスク」(gnome-disk-utility
)と、システムパーティションのバックアップを作成する機能が好きです。
しかし、ある時点で、パーティション全体の大きさではなく、その上のファイルの大きさだけのイメージを作成するプログラムについて、インターネットで読みました。今、私は再びそれを見つけることができません。
そのようなユーティリティはありますか?
単独で2つの条件をすべて満たすプログラムはないようです。
1)「ディスク」のようなGUIを使用します。
2)使用されるスペースと同じ大きさのディスクイメージを作成します。
私はかなり単純な回避策を考えていましたが、Ubuntuでは非常に一般的な2つのGUIプログラムが関係しています:
1つは同じ 'Disks'(gnome-disk-utility)で、特定のパーティションのバックアップイメージを作成するために使用され、2つ目はバックアップイメージを作成する前にパーティションをできる限り縮小し、その後に元のサイズに戻すために、パーティションを分割します。
このような操作に不便はありません。パーティションを最小に縮小するのに数分(10GBの場合は約1分)しかかからず、右側に空きスペースができます。 「ディスク」を使用してディスクのバックアップイメージを作成した後、Gpartedを使用すると、パーティションを初期状態まで空のスペースに右にサイズ変更できます。これには数秒しかかかりません。
Ubuntuがインストールされたパーティションでテスト済み:
可能な限りGpartedでパーティションを縮小する
ディスクを持つそのパーティションのバックアップイメージ
ディスクを含むイメージを、イメージより大きいパーティションに復元します。最初にそのパーティションをアンマウントする必要があります: 「ディスク」を使用してシステムパーティション(isoイメージ)を正しく復元する方法 。
ユースケースに応じて(システムバックアップの作成に使用しています)、 CloneZilla Live を使用できます。以下を作成できます。
主な利点は次のとおりです。
これらすべての利点に加えて、MBRもコピーできます。
コールドシステムのバックアップが探しているものではない場合でも、CloneZillaのベースとなる技術である partclone
を使用できます。
通常、小さなディスクイメージの実現は、イメージ内の初期ファイルシステムからゼロアウトブロックをコピーしない方法で行われます。この概念は、ファイル内のスパーススペースまたはファイル内のpuchingホールと呼ばれ、ホストファイルシステムはそれをサポートする必要があります。少しコマンドラインですが、これを試してください:
Sudo apt-get install virt-manager qemu-utils
そして、それがインストールされたら、あなたは使用することができます:
qemu-img convert -f raw -O raw /dev/sdX /home/<user>/Ubuntu.img
これにより、ディスクのスパース(ファイル内のゼロは書き込まれません)イメージが作成されます。ここで、-f = format、-O output format。 sdXディスク(パーティションも使用できます)。このプログラムには、スナップショットやさまざまな出力形式(vdi、vmdkなど)などの高度な機能があります。 場所イメージを保存する場所スパースファイルをサポートする必要がある、またはパーティションのゼロがディスクに書き込まれるため、サイズも同じくらい大きくなります。そして、それを最大限に活用するには、パーティションのaptにあるsfill
やzerofree
などのプログラムを実行します。これは、空き領域が常にゼロ領域を意味するわけではないため、ファイルシステム上のゼロスペース。
ボーナス忍者ポイント。 Linuxはディスクを「ファイル」と見なしているため、プレーンcpを使用することもできます。その場合、ファイルを保存する出力パーティションがスパースファイルを認識している必要があります。
Sudo cp --sparse=always /dev/sdX /home/<user>/Ubuntu.img
Cpを使用して生のコピーを作成します。
スパースをサポートするファイルシステムの例:ext4、btrfs、xfs、ntfs(ntfs-3gはスパース書き込みを許可しない場合があります)。
しないファイルシステムの例:fat32.
編集:ファイルシステムから削除されたファイルがまだパーティションに存在する場合、これはうまく機能しないため、最初にターゲットパーティションの空き領域を消去する必要があります。
dd if=/dev/zero of=<path_to_partition_volume>/file.dd && rm <path_to_partition_volume>/file.dd
を実行します次に:
dd
を使用してブロックごとにパーティション全体を読み取り、gzip
などの圧縮ユーティリティにすべてを出力できます。ほとんどの圧縮ツールは、最速/最低の圧縮設定を使用していても、プロセス中にすべての空き領域を圧縮します。
gzip
の場合:
Sudo dd if=/dev/sdX | GZIP=-1 gzip >/path/to/backup.gz
(GZIP=-1
は、環境変数GZIP
を-1
に一時的に設定して、最速/最低の圧縮を実現します)
バックアップを復元するには:
gzip -d /path/to/backup.gz >/dev/sdX
ddrescue
を-S
オプションとともに使用するのはどうですか?
ddrescue -S /dev/sdXY /<path_to_backup>/backup.img
これにより、各ブロックのクローンが作成されますが、ブロックデバイス/dev/sdXY
から/<path_to_backup>/backup.img
にゼロブロックが見つかりました
Clonezillaは実際、非常にフレンドリーです。ライブCDでは、コマンドラインを使用する必要はありません。マウスを使用しない場合でもGUIと呼んでも大丈夫です。多くの場合、デフォルトで問題ありません。問題は、あなたが明示的に指摘しなかったものです。それは、任意のLinuxシステムにインストールできるものとして設計されていないようです。 Debian/Ubuntu用に特別にパッケージ化されており、Live CDを実行するのが最も簡単な方法です。
Clonezilla/partcloneはファイルシステム対応のクローンを使用し、独自の圧縮イメージ形式を使用します。
ゼロセクターの検出に依存しない、シンプルな(マウント可能な)スパースファイルを生成する別の非GUIの可能性があります。
virt-sparsify /dev/your-block-device backup.img
/ tmpがramdiskの場合、一時ファイル用により多くのスペースが必要になる可能性があることを警告します。そのため、オプション--tmp /var/tmp
を追加する必要がある場合があります。
小さいドライブへのコピーには使用できません。データが10%しか満たされていない64 Gbドライブがある場合。それを6 Gbのイメージファイルにコピーし、そのターンで16 Gbドライブにコピーし、16 Gbに拡張できるようにしたい
私が今知っている唯一の可能性は、GPartedを使用してオリジナルを縮小し、コピーしてから両方のサイズを変更することです。オリジナルを縮小およびサイズ変更する必要があるため、非常に危険な操作です。
rsync
を使用して、パーティション上のファイルのみを別のパーティションにバックアップできます。またはtar
を使用して、すべてのファイルを含む圧縮アーカイブを作成します。
おそらく両方に(複数の)GUIがありますが、私はそれらを自分で使用したことはありません。