Saya suka membuat cadangan gambar untuk pertama kalinya saya mencadangkan sistem. Setelah ini pertama kali saya menggunakan rsync untuk melakukan backup tambahan.
Cadangan gambar saya yang biasa adalah sebagai berikut:
Pasang dan kosongkan ruang kosong:
dd if=/dev/zero of=temp.dd bs=1M
rm temp.dd
umount dan dd drive saat mengompresnya
dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
untuk mengembalikan sistem ke normal, saya biasanya akan melakukan
gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K
Ini sangat mudah dan memungkinkan saya untuk menyimpan 'seluruh drive' tetapi benar-benar hanya menghemat ruang yang digunakan.
Inilah masalahnya. Katakanlah saya melakukan hal di atas tetapi tidak pada sistem yang bersih dan tidak mendapatkan backup rsync segera dan ada file yang ingin saya akses yang ada di gambar. Katakanlah saya tidak memiliki ruang penyimpanan untuk benar-benar unzip dan dd gambar ke drive tetapi ingin me-mount gambar untuk mendapatkan file individual darinya .... Apakah ini mungkin?
Biasanya, seseorang tidak akan memampatkan gambar dd, yang akan memungkinkan Anda untuk hanya memasang gambar menggunakan -o loop
... tapi ini bukan kasus saya ...
Ada saran untuk memasang img yang dikompresi dengan cepat?
Apakah menggunakan AVFS untuk 'me-mount' file gz kemudian memasang dd.img internal berfungsi (saya tidak berpikir begitu ... tetapi akan memerlukan verifikasi ...)?
sumber
SquashFS
untuk hal-hal semacam ini. Ini juga menghapus duplikasi file.Jawaban:
Itu tergantung pada apakah gambar disk adalah gambar disk penuh, atau hanya sebuah partisi.
Mencuci partisi
Jika disk dalam kondisi kerja yang baik, Anda akan mendapatkan kompresi yang lebih baik jika Anda mencuci ruang kosong pada disk dengan nol. Jika disk gagal, lewati langkah ini.
Jika Anda menggambar seluruh disk maka Anda ingin mencuci setiap partisi pada disk.
PERHATIAN: Hati-hati, Anda ingin mengatur
of
ke file yang di partisi mount, TIDAK PARTISI ITU SENDIRI!Membuat Gambar Partisi
Di mana
sda
nama perangkat, dan1
nomor partisi. Sesuaikan sesuai dengan sistem Anda jika Anda ingin gambar perangkat atau partisi yang berbeda.Membuat Gambar Disk Utuh
Di mana
sda
nama perangkat. Sesuaikan sesuai dengan sistem Anda jika Anda ingin gambar perangkat yang berbeda.Kompresi
Buat gambar "squashfs" yang berisi gambar penuh yang tidak dikompresi.
Kompresi Streaming
Untuk menghindari membuat file sementara yang terpisah menjadi ukuran penuh disk, Anda dapat melakukan streaming ke gambar squashfs.
Memasang gambar partisi terkompresi
Pertama-tama pasang gambar squashfs, kemudian pasang gambar partisi yang disimpan dalam gambar squashfs yang dipasang.
Sekarang Anda memiliki gambar terkompresi terpasang, pasang gambar itu sendiri (yang ada di dalam gambar squashfs)
Sekarang gambar Anda sudah terpasang di bawah
compressed_image
.EDIT: Jika Anda hanya ingin mengembalikan gambar disk ke partisi pada saat ini (bukannya memasangnya untuk menelusuri / membaca konten), hanya
dd
gambar disquash_mount/sda1_backup.img
ke tujuan daripada melakukanmount
.Memasang gambar disk penuh yang dikompresi
Ini mengharuskan Anda untuk menggunakan paket yang disebut kpartx. kpartx memungkinkan Anda untuk memasang partisi individual dalam gambar disk penuh.
Pertama, pasang partisi tergencet Anda yang berisi gambar disk penuh
Sekarang Anda perlu membuat perangkat untuk setiap partisi di gambar disk lengkap:
Ini akan membuat perangkat untuk partisi di gambar disk penuh di
/dev/mapper/loopNpP
mana N adalah nomor yang ditetapkan untuk perangkat loopback, dan P adalah nomor partisi. Sebagai contoh:/dev/mapper/loop0p1
.Sekarang Anda memiliki cara untuk memasang partisi individual di gambar disk lengkap:
sumber
-p
atau-pf
flag untuk memberikannya file pseudo. File pseudo dapat digunakan untuk hal-hal seperti membuat node perangkat yang tidak dapat Anda lakukan tanpa root (berguna untuk membangun gambar sebagai bagian dari proses build) atau untuk mengalirkan output dari beberapa perintah ke dalam gambar. Salah satu contoh yang diberikan dalam dokumen (/usr/share/doc/squashfs-tools/examples/pseudo-file.example
pada Debian / Ubuntu) adalahinput f 444 root root dd if=/dev/sda1 bs=1024 count=10
menyalin 10K pertama dari gambar disk ke file bernama "input" di gambar squashfs.Jika gambar hanya-baca, Anda juga dapat menggunakan nbdkit ( halaman manual ) dan plugin xz -nya (xz akan memberikan kompresi yang lebih baik dan waktu akses acak daripada gzip).
Buat gambar partisi terkompresi
Sebuah
--block-size
pilihan dari 16 MiB harus memberikan kinerja akses yang baik random.Catatan: Anda dapat menggunakan program kompresi xz alternatif seperti pixz yang menyediakan kompresi paralel, hanya pastikan itu membagi output dalam beberapa blok kecil, jika tidak nbdkit harus mendekompresi banyak data. Misalnya per September 2015, pxz tidak mendukung ini.
Sajikan dengan nbdkit
Terhubung ke server NBD
Pasang hanya-baca
Ketika selesai
Hentikan nbdkit dengan menekan Ctrl+ C(atau dengan kill ).
sumber
Mencoba
archivemount
archivemount adalah sistem file berbasis FUSE untuk varian Unix, termasuk Linux. Tujuannya adalah untuk me-mount arsip (yaitu tar, tar.gz, dll.) Ke titik mount di mana ia dapat dibaca atau ditulis seperti halnya dengan sistem file lainnya. Ini membuat mengakses konten arsip, yang dapat dikompresi, transparan ke program lain, tanpa mendekompresnya.
http://linuxaria.com/howto/how-to-mounts-an-archive-for-access-as-a-file-system
Setelah memasang arsip, Anda dapat menggunakannya konten seperti file biasa. Mungkin mendapatkan tabel partisi, atau mengonversi, me-mount gambar dengan alat qemu.
squashfs berguna untuk mem-boot dari gambar, tetapi jauh lebih rumit untuk pencadangan.
sumber
dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
Jawaban ini melengkapi jawaban Cristian Ciupitu . Jika Anda menggunakan kompresi xz dengan ukuran blok yang masuk akal, Anda dapat mengakses disk image menggunakan guestfish atau alat libguestfs lainnya seperti ini:
sumber
Tidak juga. Anda tidak dapat benar-benar mencari blok tertentu dalam file terkompresi tanpa mendekompres semuanya terlebih dahulu, yang membuatnya sulit untuk menggunakan gambar terkompresi sebagai perangkat blok.
Anda dapat menggunakan sesuatu seperti
dump
danrestore
(atautar
, sungguh), yang semuanya menggunakan format streaming ... sehingga Anda dapat mengakses file invidividual dengan secara efektif memindai melalui aliran yang tidak terkompresi. Ini berarti jika file yang Anda inginkan ada di akhir arsip terkompresi, Anda mungkin memiliki waktu lama untuk menunggu, tetapi itu tidak mengharuskan Anda untuk benar-benar mendekompresi semua ke disk.Menggunakan
tar
untuk cadangan mungkin tampak agak kuno, tetapi Anda mendapatkan banyak fleksibilitas.sumber
Addendum lain untuk jawaban Cristian Ciupitu ini :
Jika Anda menggunakan
nbdkit
untuk me-mount gambar disk penuh (vs gambar partisi), Anda mungkin perlu menentukan ukuran blok (ukuran sektor disk) saat menghubungkan ke server NBD, karena default ke1024
byte. Untuk menggunakan512
byte sebagai gantinya:Setelah itu, disk akan muncul sebagai
/dev/nbd0
, dan Anda harus dapat melihat tabel partisi menggunakanfdisk -l
. Namun, partisi belum dapat di- mount - Gunakankpartx
(dari jawaban doug65536 ) untuk membuat perangkat untuk partisi, mis::Akhirnya, partisi akan muncul
/dev/mapper/
, dan Anda dapat memasang mereka seperti biasa. Pastikan untuk menggunakan mode readonly (-o ro
), karena plugin xz hanya mendukung reads:sumber