Saya memiliki disk, katakan / dev / sda.
Berikut ini adalah 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
Saya perlu membuat gambar untuk disimpan di server file kami untuk digunakan dalam mem-flash perangkat lain yang kami produksi jadi saya hanya ingin ruang yang digunakan (hanya sekitar 4gb). Saya ingin menyimpan mbr dll ... karena perangkat ini harus siap boot segera setelah salinan selesai.
Ada ide? Saya sebelumnya telah menggunakan dd if=/dev/sda of=[//fileserver/file]
, tetapi pada saat itu, salinan master saya menggunakan ide flash 4GB.
linux
hard-drive
dd
Jonathan Henson
sumber
sumber
dd conv=sparse
.Jawaban:
Kembali pada hari saya mengalami masalah yang sama dengan distribusi Linux tertanam - singkirkan semua sampah sebelum mengompresi gambar.
dd if=/dev/zero of=asdf.txt
. Tunggu sampai mati. Hapus asdf.txt.Anda baru saja menulis nol untuk semua ruang kosong di perangkat.
Sekarang ambil gambar disk dan jalankan melalui gzip. Voila, gambar yang jarang.
Mungkin skalanya tidak terlalu baik dan dapat menyebabkan masalah jika Anda benar-benar perlu menulis ke disk, tapi hei.
Anda bisa mengambil snapshot rsync disk ke volume lain, nol itu, dan kemudian mengambil gambar disk.
Catatan: Bisa berbahaya untuk SSD, pengguna harus mempertimbangkan operasi ini sebelum melakukan.
sumber
dd if=sda2.gz | gunzip > /dev/sda2
dandd if=/dev/sda2 | gzip > sda2.gz
of
jalur untuk setiap partisi.Dengan asumsi Anda ingin menyimpan
/dev/sdXN
untuk/tgtfs/image.raw
dan Anda root:mkdir /srcfs && mount /dev/sdXN /srcfs
Gunakan zerofill atau just:
dd if=/dev/zero of=/srcfs/tmpzero.txt
untuk mengisi blok yang tidak digunakan dengan nol (tunggulah sampai penuhi sistem filerm /srcfs/tmpzero.txt
)Ambil gambar dengan dd dan gunakan conv = jarang untuk meninju nol saat bepergian:
dd conv=sparse if=/dev/sdxn of=/tgtfs/image.raw
Jika Anda ingin menggunakan kompresi, Anda tidak perlu memukul nol dengan dd karena nol blok sangat kompresibel:
PS: Anda harus mencatat bahwa ini bukan ide yang baik pada media penyimpanan berbasis memori flash (yaitu sistem file sumber Anda menjadi SSD)
sumber
dd conv=sparse
.btrfs snapshot
danbtrfs send
alat) adalah solusi IMHO yang lebih baik.gz
pada AndaPATH
(seperti yang saya lakukan tidak, pada GParted Hidup), Anda dapat menggunakangzip -c
sebagai gantinya.Gunakan dd, dengan opsi hitung.
Jika Anda menggunakan fdisk, maka saya akan mengambil pendekatan itu. "Sudo fdisk -l" Anda menghasilkan:
Dua hal yang harus Anda perhatikan adalah 1) ukuran unit, dan 2) kolom "Akhir". Dalam kasus Anda, Anda memiliki silinder yang sama dengan 8225280 Bytes. Pada kolom "End" sda8 berakhir pada 525 (yaitu 525 [unit] * 16065 * 512 = ~ 4.3GB)
dd dapat melakukan banyak hal, seperti memulai setelah offset, atau berhenti setelah sejumlah blok tertentu. Kami akan melakukan yang terakhir menggunakan opsi hitung di dd. Perintah akan muncul sebagai berikut:
Di mana -b adalah ukuran blok (paling mudah untuk menggunakan unit yang digunakan fdisk, tetapi unit apa pun akan melakukannya selama opsi penghitungan dideklarasikan dalam unit-unit ini), dan hitungan adalah jumlah unit yang ingin kita salin (perhatikan bahwa kami menambah hitungan dengan 1 untuk menangkap blok terakhir).
sumber
fdisk -l -u=cylinders /dev/sda
Sementara
/dev/zero
ruang disk kosong dan penggunaandd conv=sparse
/gz -c
dimungkinkan, pada disk besar dengan ruang kosong yang berjalan dalam 100-an GB,/dev/zero
prosesnya sangat lambat - belum lagi seperti yang dicatat oleh jawaban lain,/dev/zero
gunakan SDD hingga EOF.Inilah yang saya lakukan ketika saya mengalami situasi ini:
Pada live CD lubuntu, digunakan
gparted
untuk 'mengecilkan' disk ke ukuran seminimal mungkin, meninggalkan sisa ruang yang tidak terisiDigunakan
dd bs=1M count=<size_in_MBs> if=/dev/sdX | gzip -c --fast| dd of=/path/to/image.gz
untuk membuat gambar yang dikompresi cepat (tidak perlu dikatakan, Anda mungkin ingin melewatkan kompresi jika Anda memiliki ruang yang cukup untuk menyimpan data mentah (atau sebaliknya cenderung mengurangi pemuatan CPU)dd if=/path/to/image.gz | gunzip -c | dd bs=1M of=/dev/sdY
untuk menyalin data kembali ke disk yang berbedagparted
lagi untuk 'memperluas' partisiSaya belum mencobanya untuk beberapa partisi tapi saya percaya proses di atas dapat disesuaikan untuk menyalin 'partisi' jika partisi-tabel pada disk tujuan dibuat terlebih dahulu dan hanya data yang terkandung dalam partisi yang disalin melalui
dd
- baca / tulis offset (skip
/seek
Opsidd
, masing-masing) akan diperlukan sesuai kebutuhan.sumber
count
parameterKamu tidak bisa
dd
adalah alat tingkat yang sangat rendah dan tidak memiliki alat untuk membedakan antara file dan ruang kosong.Di sisi lain ruang kosong akan memampatkan sangat, sangat baik jadi jika Anda hanya peduli tentang ruang penyimpanan, bukan misalnya waktu menulis, maka cukup pipa melalui gzip.
sumber
Dengan asumsi sisa drive kosong (semua nol) Anda dapat menyalurkan DD Anda melalui gzip, yang akan memampatkan ruang kosong dengan cukup baik. Anda dapat menggunakan alat seperti zerofree untuk memastikan ruang kosong Anda benar-benar kosong sehingga dapat dikompres dengan baik.
Jika Anda menggunakan alat seperti partimage , clonezilla atau beberapa alat kloning linux lainnya, mereka akan menangani sebagian besar untuk Anda secara otomatis.
sumber
Jawaban yang diterima tidak benar. Saya setuju dengan komentar di atas. Saya menggunakan dd dengan parameter hitung untuk membuat cadangan disk saya pada basis reguler. Cukup ganti BACKUP_FOLDER dan huruf perangkat Anda dengan "X":
Tentukan blok disk yang terakhir digunakan:
Kemudian kloning disk (tidak termasuk ruang kosong itu):
sumber