Bagaimana saya bisa menggunakan DD untuk memigrasikan data dari drive lama ke drive baru?

29

Saya memutakhirkan hard drive SATA internal pada laptop saya dari drive 40G ke drive 160G. Saya memiliki desktop Linux / Ubuntu yang memiliki kartu SATA. Saya sebenarnya ingin melakukan hal yang sama untuk beberapa kotak CentOS & FreeBSD di tempat kerja, dan sepertinya ini akan memiliki solusi yang sama.

Saya pernah mendengar bahwa saya dapat menggunakan DD untuk mencerminkan partisi 40G ke drive 160G, atau bahwa saya dapat menyimpan partisi 40G sebagai gambar di sistem lokal saya, dan kemudian menyalin gambar 40G itu ke drive 160G.

Adakah yang bisa menggambarkan bagaimana saya bisa melakukan ini? Apakah saya memerlukan utilitas lain, seperti gparted

Stefan Lasiewski
sumber
3
Ahha ... Ini pertanyaan pertama !!
Harshit Shrivastava
2
Pertanyaan nomor satu! Saya juga pengusul untuk situs ini, dan saya pikir saya akan memulai situs dengan pertanyaan yang cukup teknis. Saya mendapat hadiah berupa T-shirt dan barang curian.
Stefan Lasiewski

Jawaban:

6

Tugas pertama Anda adalah menghubungkan kedua disk ke sistem Linux yang ada atau menghubungkan disk baru ke sistem asli.

Anda harus sangat berhati-hati karena sangat mudah untuk menyalin disk kosong di atas disk yang baik!

Untuk mengakhiri dengan sektor boot dan semuanya, Anda akan melakukan sesuatu seperti:

dd if=/dev/hdx of=/dev/hdy

Dimana hdxadalah 40G disk dan hdyadalah 160g disk Anda. Anda akan melihat tidak ada nomor partisi seperti /dev/hdx1. Ini menyalin seluruh disk, info partisi dan semua.

Disk baru Anda akan seperti disk lama, dialokasikan 40G. Seharusnya boot tepat ketika ditempatkan kembali di laptop Anda. Semoga Anda menggunakan LVM? Kalau tidak, harap Anda tidak menggunakan semua partisi? Untuk melewati titik ini membutuhkan lebih banyak info.

Solusi lain adalah membuang setiap partisi individual. Ini membutuhkan lebih banyak kesadaran situasi karena Anda harus membuat ulang informasi boot.

Semua ini paling baik digunakan untuk mengkloning komputer, bukan memutakhirkan hard disk. Jauh lebih baik untuk mengembalikan ke instalasi baru menggunakan cadangan Anda.

Stephen Jazdzewski
sumber
17

Biasanya saya akan menyarankan solusi seperti "menghubungkan hard drive ke-2 menggunakan penutup eksternal, boot dari CD linux, kemudian gunakan perintah seperti itu dd if=/dev/sda of=/dev/sdb bs=1G, tetapi karena Anda ingin menggunakan teknik yang sama untuk bekerja, saya memiliki apa yang mungkin solusi yang lebih baik.

Semua server dan laptop saya dicitrakan di kantor menggunakan Clonezilla . Ada dua cara menggunakannya ... satu di antaranya menggunakan dedicated server dan mungkin berlebihan bagi Anda, dan yang lain menggunakan CD boot dan hard drive eksternal.

Idenya adalah Anda boot dengan CD Clonezilla dan memiliki drive USB eksternal yang lebih besar (lebih besar dari drive sumber). Clonezilla memandu Anda melalui pembuatan gambar drive yang ada, setelah itu Anda mematikan mesin, mengganti drive, lalu boot kembali ke Clonezilla, dan itu menuntun Anda melalui mengembalikan data.

Ini memberi Anda kesempatan untuk A) meletakkan gambar pada drive yang lebih besar, dan B) menyimpan cadangan data.

Matt Simmons
sumber
5

Meskipun Anda dapat menggunakan dd untuk menyalin disk seperti itu, melakukannya memiliki sejumlah kelemahan:

  1. Destinasi harus berukuran persis sama atau lebih besar dari sumber
  2. Setelah menyalin, Anda harus mengubah ukuran partisi untuk menggunakan ruang tambahan apa pun
  3. Anda akan membuang waktu menyalin ruang kosong
  4. Setiap fragmentasi yang ada di disk lama akan dipertahankan

Menggunakan program pencitraan seperti Ghost4Linux, partclone, atau clonezilla setidaknya menangani angka 2 dan 3. Anda juga dapat memformat disk baru, cp -axpasang , dan salin semua file dengan (sebagai root), dan kemudian instal ulang boot loader di drive baru. Metode ini tidak mengalami salah satu kelemahan di atas.

psusi
sumber
3

Untuk cukup menyalin partisi, Anda dapat menggunakan dd if=/dev/srcDrive of=/dev/dstDriveatau sesuatu seperti ini. Saya akan merekomendasikan Anda untuk membaca halaman manualnya . Maaf saya tidak bisa memberikan lebih banyak info, karena saya sedang bekerja sekarang ..

Berne
sumber
2

Anda bertanya bagaimana melakukannya dengan dd, tapi saya lebih sukses menyalurkan output dump ke restore . Diberikan sumber ad1s1a dan target ad2s1a :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

Saya mencoba ini di FreeBSD, sebenarnya saya menemukannya di FreeBSD Forum

zvolkov
sumber
1

Salah satu contoh sederhana adalah ini:

dd if=/dev/sda of=/dev/sdb

Tetapi jika Anda memiliki beberapa kebutuhan khusus, Anda benar-benar harus membaca halaman manual (man dd) atau mencari di Google.

Gagasan lain dapat berupa penggunaan rsync (jangan lupa untuk mengatur opsi yang tepat, seperti -az [mengemas file alih-alih menyalin satu file demi satu]] atau --numeric-id [menggunakan uid / gid alih-alih nama seperti "root"] dan mungkin beberapa yang lain). Tautan berisi banyak contoh.

Jika HDD baru tidak memiliki partisi, Anda dapat menggunakan gparted atau palimpset.

Ketika Anda tidak yakin saya akan memformat HDD dan kemudian menyinkronkan data dengan rsync.

fwaechter
sumber
1

Yah, saya telah melakukan migrasi yang mirip dengan ini dengan mem-boot dengan kedua disk terpasang dan Live cd.

  1. Anda membuat ulang info partisi disk pertama di disk kedua, mungkin membuat beberapa partisi lebih besar untuk menggunakan ruang ekstra, dan sebagainya.
  2. Maka misalkan Anda memiliki / dev / sda {1,2,3,4} dan ingin menyalinnya ke / dev / sdb {1,2,3,4}, Anda mkdir / mnt / sd {a, b} {1 , 2,3,4} dan me-mount setiap partisi dalam setiap dir (atau jika Anda ingin melakukannya satu per satu Anda dapat membuat / mnt / asal / mnt / tujuan dan mount / umount masing-masing pasangan)
  3. Kemudian Anda melakukan cp -avr / mnt / origin /. / mnt / tujuan / (atau cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Tunggu selagi Anda menjelajah web :)
  5. Ingat diri Anda untuk menginstal ulang grub, lilo atau bootmanager apa pun yang Anda gunakan.

Melakukannya dengan cara Anda akan mendefrag file ketika mereka disalin, Anda juga dapat mengubah sistem file di partisi (bermigrasi dari reiserfs atau ext3 ke ext4, dll.), Tapi tolong, ingatlah untuk mengedit / etc / fstab setelah menyalin sesuai situasi baru.

Jorge Nerín
sumber