「ディスク」(gnome-disk-utility
)とシステムパーティションのバックアップを作成する機能が好きです。
しかし、ある時点で、パーティション全体ほどの大きさではなく、その上のファイルと同じ大きさのイメージを作成するプログラムについて、インターネットで読みました。今、私はそれを再び見つけることができません。
そのようなユーティリティはありますか?
「ディスク」(gnome-disk-utility
)とシステムパーティションのバックアップを作成する機能が好きです。
しかし、ある時点で、パーティション全体ほどの大きさではなく、その上のファイルと同じ大きさのイメージを作成するプログラムについて、インターネットで読みました。今、私はそれを再び見つけることができません。
そのようなユーティリティはありますか?
回答:
次の回答では、GUIソリューションではなくTUIを使用しています。
用途に応じて(システムバックアップの作成に使用します)、CloneZilla Liveを使用できます。それは作成できます:
主な利点は次のとおりです。
これらすべての利点に加えて、MBRもコピーできます。
コールドシステムのバックアップが目的に合わない場合でも、CloneZillaの基盤となっているテクノロジーを使用できますpartclone
。
小さいディスクイメージを実現するには、通常、イメージの初期ファイルシステムからゼロアウトブロックをコピーしないようにします。この概念は、ファイルのスパーススペースまたはファイルのパンチホールと呼ばれ、ホストファイルシステムがそれをサポートする必要があります。少しコマンドラインですが、これを試してください:
sudo apt-get install virt-manager qemu-utils
そして、それがインストールされると、あなたは使うことができます:
qemu-img convert -f raw -O raw /dev/sdX /home/<user>/Ubuntu.img
これにより、ディスクの疎(ファイル内のゼロは書き込まれません)イメージが作成されます。ここで、-f =形式、-O出力形式。sdXディスク(パーティションも使用できます)。プログラムには、スナップショットやさまざまな出力形式(vdi、vmdkなど)などの高度な機能があります。あなたの場所あなたは画像を保存スパースファイルをサポートしている、または他のサイズは、パーティション内のゼロがディスクに書き込まれるので、ちょうど大きなようになります。そして、それを最大限に活用するために、このようなプログラムを実行するのですsfill
かzerofree
空き領域が常にゼロスペースを意味しない、とあなたは、ファイルシステム上のゼロスペースの量を最大化したいので、パーティション上のaptで見つかりました。
ボーナス忍者ポイント。Linuxはディスクを「ファイル」と見なしているため、ファイルをパークする出力パーティションがスパースファイルを知っているという条件で、プレーンなcpを使用することもできます。
sudo cp --sparse=always /dev/sdX /home/<user>/Ubuntu.img
これは、cpを使用してrawコピーを作成します。
スパースをサポートするファイルシステムの例:ext4、btrfs、xfs、ntfs(ただし、ntfs-3gはスパース書き込みを許可しない場合があります)。
しないファイルシステムの例:fat32。
sudo cp /home/<user>/Ubuntu.img /dev/sdX
、またはあなたの場合は空想のDD sudo dd if=/home/<user>/Ubuntu.img of=/dev/sdX
。qemu-img convert ..と同じことです。あなたが言うなら、実際のハードウェア上に仮想マシンを移植したいと思います。ライトバックすると、ディスクにゼロが書き込まれます。したがって、パーティションのジオメトリに適切に対処する必要があるため、unsparseになります。
単独ですべてが2つの条件を満たすプログラムはないようです。
1)「ディスク」のようなGUIを使用します。
2)使用されているスペースと同じ大きさのディスクイメージを作成し、
私はかなり単純な回避策について考えていましたが、1つはUbuntuで非常に一般的な2つのGUIプログラムを含みます。
1つは、特定のパーティションのバックアップイメージを作成するために使用されるのと同じ「ディスク」(gnome-disk-utility)であり、もう1つは Gpartedで、バックアップイメージを作成する前にパーティションを可能な限り縮小します。その後、元のサイズに戻します。
そのような操作には不便はありません。パーティションを最小に縮小すると、数分(10 GBの場合は約1分)しかかからず、右側に空のスペースが作成されます。「ディスク」を使用してディスクのバックアップイメージを作成した後、Gpartedを使用して、パーティションを右側の空きスペースにサイズ変更して初期状態に戻すことができ、数秒しかかかりません。
Ubuntuがインストールされているパーティションでテスト:
Gpartedでパーティションを可能な限り縮小する
ディスクを含むそのパーティションのバックアップイメージ
ディスクを含むイメージをイメージより大きいパーティションに復元します。最初にそのパーティションをアンマウントする必要があります。「ディスク」を使用してシステムパーティション(ISOイメージ)を正しく復元する方法
編集:これは、ファイルシステムから削除されたファイルがパーティションにまだ存在する場合はうまく機能しません。そのため、最初にターゲットパーティションの空き領域を消去する必要があります。
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
小さいドライブへのコピーには使用できません。データが10%しか入っていない64 Gbドライブがある場合。それを6 Gbのイメージファイルにコピーしたいのですが、その順番で16Gbドライブにコピーして、それを16Gbに拡張できます。
私が今知っている唯一の可能性は、GPartedを使用してオリジナルを縮小し、コピーして両方のサイズを変更することです。オリジナルを縮小してサイズを変更する必要があるため、非常に危険な操作です。
Clonezillaは実際には非常に友好的です。ライブCDでは、コマンドラインを使用する必要はありません。マウスを使用しない場合でも、GUIと呼んでも大丈夫です。多くの場合、デフォルトで問題ないと思います。問題は、あなたが明示的に呼び出さなかったものです:任意のLinuxシステムにインストールできるものとして設計されていないようです。特にDebian / Ubuntu用にパッケージ化されており、Live CDはそれを実行する最も簡単な方法です。
Clonezilla / partcloneは、ファイルシステム対応のクローン作成を使用し、独自の圧縮イメージ形式を使用します。
ゼロセクターの検出に依存しない、シンプルな(マウント可能な)スパースファイルを生成する非GUIの可能性がもう1つあります。
virt-sparsify /dev/your-block-device backup.img
/ tmpがramdiskの場合、一時ファイル用にさらに多くのスペースが必要になる可能性があることを警告します。したがって、オプションを追加する必要があるかもしれません--tmp /var/tmp
。
virt-sparsify --version
ますか?オプションは私の文書に記載されています(man virt-sparsify
)...私はそれを使用したとは言えませんが、少なくとも私の現在/tmp
はtmpfsです。を使用できる場合--in-place
、一時的な保存が回避されるように見えます。最後に、あなたも試してみてくださいTMPDIR=/var/tmp virt-sparsify ...
。私のバージョンのドキュメントでは、1.28より前のバージョンのtmpディレクトリを設定する必要があるとしています。