システムを初めてバックアップするときにイメージバックアップを作成したいと思います。最初から、rsync
増分バックアップを実行しました。
私の一般的なイメージのバックアップは次のとおりです。
空のスペースをインストールしてゼロにします。
dd if=/dev/zero of=temp.dd bs=1M rm temp.dd
dd
ドライブのマウント解除と圧縮dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
システムを再び正常に戻すには、通常、次の手順を実行します。
gzip -dc /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K
これは非常に簡単で、「フルドライブ」を保存できますが、実際には使用されているスペースだけを節約するだけです。
それが問題だ。上記の作業を行いましたが、きれいなシステムでは実行せず、rsync
バックアップ速度が十分に高速ではなく、アクセスしたいイメージにファイルがあるとします。実際にdd
画像を解凍してドライブに保存するための記憶領域はありませんが、画像をマウントして個々のファイルをインポートしたいとします...これは可能ですか?
通常、人々は画像を圧縮しませんdd
。これにより、次のようにイメージをインストールできます...-o loop
しかし、私の場合はそうではありません...
インスタントで圧縮されたimgをインストールするための提案はありますか?
使用するAVFSgzファイルを「インストール」してから内部dd.imgをインストールすると動作します(そうではないと思いますが…確認が必要です…)?
答え1
ディスクイメージが完全なディスクイメージであるか、それとも単純なパーティションかによって異なります。
パーティションのクリーニング
ディスクが正常に動作している場合、ディスクの空き領域をゼロにクリーンアップすると圧縮性能が向上します。ディスクに障害が発生した場合は、この手順をスキップしてください。
ディスク全体をイメージングする場合は、ディスク上のすべてのパーティションをクリーンアップする必要があります。
警告する:気をつけて、君もof
そうしたい文書マウントされたパーティションではパーティション自体ではありません!
mkdir image_source
sudo mount /dev/sda1 image_source
dd if=/dev/zero of=image_source/wash.tmp bs=4M
rm image_source/wash.tmp
sudo umount image_source
パーティションイメージの作成
mkdir image
sudo dd if=/dev/sda1 of=image/sda1_backup.img bs=4M
はsda
デバイス名、および1
パーティション番号です。他のデバイスやパーティションをミラーリングするには、システムに合わせて調整してください。
フルディスクイメージの作成
mkdir image
sudo dd if=/dev/sda of=image/sda_backup.img bs=4M
sda
デバイス名はどこにありますか?他のデバイスを画像化するには、システムに合わせて調整します。
圧縮
圧縮されていない完全な画像を含む「squashfs」画像を作成します。
sudo apt-get install squashfs-tools
mksquashfs image squash.img
ストリーミングメディア圧縮
ディスク全体のサイズを占める別の一時ファイルを作成したくない場合は、イメージにストリーミングできますsquashfs
。
mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'
圧縮パーティションイメージのマウント
- まず
squashfs
、イメージをマウントしてから、マウントされたイメージに保存されているパーティションイメージをマウントしますsquashfs
。mkdir squash_mount sudo mount squash.img squash_mount
- これで、圧縮された画像をマウントしたので、画像自体(つまり
squashfs
画像の内側)をマウントします。mkdir compressed_image sudo mount squash_mount/sda1_backup.img compressed_image
- これで画像がにインストールされました
compressed_image
。
編集:この時点でディスクdd
イメージをパーティションに復元するには(コンテンツを参照または読み取るためにマウントする代わりに)。squash_mount/sda1_backup.img
mount
圧縮されたフルディスクイメージのマウント
これには、というパッケージを使用する必要がありますkpartx
。kpartx
ディスクイメージ全体に個々のパーティションをマウントできます。
sudo apt-get install kpartx
まず、ディスクイメージ全体を含む圧縮パーティションをマウントします。
mkdir compressed_image sudo mount squash.img compressed_image
これで、ディスクイメージ全体の各パーティションのデバイスを作成する必要があります。
sudo kpartx -a compressed_image/sda_backup.img
これにより、ディスクイメージ全体にパーティション用のデバイスが作成されます。
/dev/mapper/loopNpP
N
ループバックデバイスに割り当てられた番号。P
はパーティション番号です(例:/dev/mapper/loop0p1
この番号を見つけることができます。N
出力からlosetup --list
。最後に生成されたループバックデバイスは最大値を持つ必要があります。N
数字。これで、ディスクイメージ全体に個々のパーティションをマウントできます。
mkdir fulldisk_part1 sudo mount /dev/mapper/loop0p1 fulldisk_part1
答え2
努力するarchivemount
root@srv1:/backup# archivemount windows-2003-S.gz /target/
Unrecognized archive format
root@srv1:/backup# archivemount -o formatraw windows-2003-S.gz /target/
Calculating uncompressed file size. Please wait.
root@srv1:/backup# ls /target/
data
root@srv1:/backup# file /target/data
/target/data: DOS/MBR boot sector; partition 1 : ID=0x7, start-CHS (0x0,1,1), end-CHS (0x3ff,254,63), startsector 63, 58717512 sectors, extended partition table (last)
archivemountは、Linuxを含むUnixバリアントのためのFUSEベースのファイルシステムです。その目的は、アーカイブ(tar、tar.gzなど)を他のファイルシステムと同じように読み書きできるマウントポイントにマウントすることです。これにより、解凍することなく、潜在的に圧縮されたアーカイブコンテンツに透過的にアクセスできます。
http://linuxaria.com/howto/how-to-mounts-an-archive-for-access-as-a-file-system
アーカイブがインストールされると、その内容は通常のファイルのように使用できます。パーティションテーブルをインポートするか、qemuツールを使用してイメージを変換してマウントすることもできます。
squashfsはイメージから起動するのに便利ですが、バックアップは非常に複雑です。
答え3
画像が次の場合読み取り専用また、使用することができますNBDキット(マニュアルページ)そしてxzフィルタ(xzはgzipよりも優れた圧縮時間とランダムアクセス時間を提供する必要があります)。必要な場合一時的に書き込みアクセス、牛(書き込み時のコピー)フィルタが役に立ちます。
圧縮パーティションイメージの作成
dd if=/dev/sda1 bs=16M | xz -9 --block-size=16MiB > sda1.img.xz
16MiBオプションは--block-size
優れたランダムアクセス性能を提供する必要があります。
注:次の代替xzコンプレッサーを使用できます。ピクセル並列圧縮を提供します。出力を小さな塊に分割することを確認してください。そうでなければNBDキット大量のデータを解凍する必要があります。たとえば、2015年9月現在、ピクセルこれはサポートされていません。
nbdkitで使用
nbdkit --no-fork --user nobody --group nobody -i 127.0.0.1 \
--filter xz file sda1.img.xz
NBDサーバーに接続
nbd-client 127.0.0.1 10809 /dev/nbd0 -nofork
読み取り専用でマウントしてください。
mount -o ro /dev/nbd0 sda1
終わった後
umount /dev/nbd0
nbd-client -d /dev/nbd0
止めるNBDキットCtrl+をC押す殺す)。
答え4
まさか。最初にファイル全体を解凍しないと、圧縮ファイル内の特定のブロックが実際に見つからないため、圧縮された画像をブロックデバイスとして使用することは困難です。
dump
restore
(または実際には)などのものを使用できます。すべてストリーム形式を使用するため、圧縮tar
されていないストリームを効果的にスキャンして単一のファイルにアクセスできます。つまり、必要なファイルが圧縮されたアーカイブの末尾にある場合は、長い時間を待つ必要がありますが、実際にすべてをディスクに解凍する必要はありません。
バックアップにはややtar
昔ながらのように見えますが、柔軟性に優れています。