menggunakan dd untuk menyalin partisi ke partisi lain, saat menggunakan drive fisik

17

Saya tidak yakin bagaimana menjelaskan ini dalam subjek yang lebih baik, jadi "pertanyaan" mungkin tidak benar. Tapi ini dia. Saya punya tiga hard drive. Drive A adalah drive 320GB, Drive B adalah Drive 80 GB, dan Drive C adalah Drive 1TB. Saya telah menyalin data dari drive 80 GB ke drive 1TB, dan saya akan mengubah ukuran partisi (jadi saya dapat menyalin data dari drive 320 GB selanjutnya).

Pertanyaan saya adalah ini: Jika saya boot ke sistem operasi pada drive 1TB, dapatkah saya menggunakan dd untuk menyalin drive 320 GB ke partisi lain pada drive fisik itu? Saya tahu bahwa saya tidak boleh menyalin partisi langsung (artinya saya tidak bisa menyalin data dari drive 320 GB jika saya menjalankan sistem operasi itu).

Alasan saya adalah ini: Saya mencoba menggunakan Acronis TrueImage, Partition Manager, dan Image 4 DOS / Linux (kedua aplikasi), dan itu akan memakan waktu lebih dari seminggu untuk menyalin data. Itu berarti bahwa selama seminggu, saya tidak dapat menggunakan komputer, yang tidak dapat diterima (kecuali itu satu-satunya pilihan saya). Saya berharap ini berfungsi, jadi saya setidaknya bisa menggunakan komputer saat saya sedang menyalin.

Jika harus, saya bisa boot ke Live CD (bukan pilihan yang disukai) atau menggunakan "Drive B", tetapi saya ingin menghapus drive itu sesegera mungkin.

Der Hochstapler
sumber
Tentu, mengapa tidak ?
Michael Hampton

Jawaban:

17

Ya, apa yang ingin Anda lakukan akan bekerja dengan baik, mengingat dua kondisi berikut ini benar:

  1. Tidak ada (dipasang) filesystem pada partisi yang Anda dd'ing untuk .
  2. Partisi Anda dd'ing untuk setidaknya ukuran yang sama sebagai salah satu Anda sedang dd'ing dari (yaitu 320 GB).

Alasan bahwa itu akan berfungsi dengan baik adalah bahwa partisi hanyalah file di UNIX. Isinya hanya memiliki makna khusus jika mengandung sistem file yang terpasang.

Dengan asumsi Anda memiliki tata letak yang terlihat seperti ini:

1 TB = sda, dua partisi, sda1 yang Anda boot dari dan sda2 yang ingin Anda tuju

320 GB = sdb, satu partisi, sdb1 yang Anda gunakan

Perintah Anda akan terlihat seperti ini:

dd if=/dev/sdb1 of=/dev/sda2 bs=1M

The bs=1Mparameter yang ada untuk memastikan bahwa dd salinan data dalam potongan besar bukannya mengeluarkan permintaan untuk masing-masing sektor.

Michael Fenn
sumber
1
jika = sumber = tujuan saya pikir ada sesuatu yang salah dalam saran di atas.
Pada contoh di atas, sdb1 adalah sumber dan sda2 adalah tujuannya. Saya mengedit jawaban untuk lebih jelas tentang itu.
Michael Fenn
1
Tidak perlu melakukan resize2fssetelah salinan? Bahkan ketika ukurannya berbeda?
Sopalajo de Arrierez
5

Secara umum ok untuk partisi apa pun saat sedang tidak di-mount. Jika Anda harus me-mount partisi sumber untuk membaca ketika dd berjalan, akan lebih baik untuk me-mountnya hanya dengan membaca parameter -o ro.

jika Anda ingin mem-boot dulu ke partisi sumber dan kemudian menggunakan dd untuk menyalinnya, Anda dapat melakukan mount -o ro, remount / untuk membuatnya hanya dibaca setelah booting.

ulangan
sumber
Baca saja tidak berarti sistem file tidak main-main dengan jurnal atau mengatur ulang ruang kosong atau apa pun.
vonbrand
@vonbrand dapatkah Anda memberikan contoh implementasi sistem file linux yang melakukan itu saat dalam mode RO?
Basilevs
@vonbrand Dalam UNIX filesystem, makhluk dipasang ro sangat tidak berarti bahwa tidak ada menulis harus dikeluarkan untuk perangkat yang mendasari.
Michael Fenn