Saya memiliki drive USB 8GB yang terpasang pada sistem saya yang terlihat seperti ini:
[root@host]# fdisk -l /dev/sdb
Disk /dev/sdb: 8462 MB, 8462008320 bytes
255 heads, 63 sectors/track, 1028 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: 0x5c0894d9
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 9 72261 e W95 FAT16 (LBA)
/dev/sdb2 10 103 755055 83 Linux
[root@host]#
Jadi pada dasarnya partisi FAT saya sekitar 70 MB, partisi ext2 sekitar 740MB dan sisa ruang (~ 7 GB) tidak terisi. Sekarang ketika saya menemukan hard drive USB saya melalui:
dd if=/dev/sdb of=myimage.img bs=1M
file output (myimage.img) adalah sekitar 8GB yang merupakan operasi normal dd.
Pertanyaan: Apa yang saya cari adalah cara untuk langsung mengkloning hard drive USB saya tanpa ruang yang tidak terisi sehingga file hasil saya sekitar 1 GB terkompresi bukannya 8 GB. Alasan saya bertanya adalah karena file output (myimage.img) sedang digunakan oleh program simulator untuk mem-boot gambar. Simulator dapat menangani file 8 GB tetapi saya tidak ingin membuang ruang disk saya.
Jawaban:
Jika saya mengerti dengan benar, Anda ingin membuat gambar dari awal disk hingga akhir partisi terakhir.
Parameter untuk
dd
ini adalahcount=
. Partisi terakhir Anda berakhir pada 103, dan jumlah akan perlu 1 ekstra (104) dan ukuran unit Anda adalah 8225280 byte (sesuai denganfdisk -l
output). Jadi Anda bisa memodifikasi perintah Anda dengan cara ini:Namun, saya sarankan Anda lari
fdisk -u -l /dev/sdb
saja. Silinder tidak benar-benar relevan di usia ini lagi, jadi Anda lebih baik jika Anda melihat jumlah sektor untuk menghindari kesalahan pembulatan. Maka Anda harus menjalankan:di mana hitungan akan ditetapkan ke angka yang Anda dapatkan dari
fdisk -u -l
pada akhir partisi terakhir ditambah satu , bukan apa yang dulu 104. Ukuran blok default untukdd
adalah 512 byte, yang juga merupakan unit yangfdisk -u -l
akan digunakan dalam output.Tabel partisi cadangan partisi GPT disimpan di akhir disk, tetapi karena Anda tidak menggunakan GPT, Anda akan baik-baik saja.
sumber
Anda hanya perlu memberi tahu dd untuk hanya membaca bagian dari drive yang Anda minati. Parameter yang Anda cari adalah
count
.Jadi, ambil ukuran silinder Anda 8.225.280 dan kalikan jumlah silinder yang digunakan 103 dan Anda dapatkan 847.203.840 byte. Karena Anda menggunakan ukuran blok satu megabita, konversikan byte itu menjadi megabita yang 808.
Jadi perintahmu adalah
dd if=... of=... bs=1M count=808
sumber