ฉันจะใช้ DD เพื่อย้ายข้อมูลจากไดรฟ์เก่าไปยังไดรฟ์ใหม่ได้อย่างไร


29

ฉันกำลังอัปเกรดฮาร์ดไดรฟ์ SATA ภายในบนแล็ปท็อปของฉันจากไดรฟ์ 40G เป็นไดรฟ์ 160G ฉันมีเดสก์ท็อป Linux / Ubuntu ซึ่งมีการ์ด SATA จริง ๆ แล้วฉันอยากจะทำสิ่งเดียวกันสำหรับ CentOS และ FreeBSD สองกล่องในที่ทำงานและดูเหมือนว่านี่จะมีวิธีแก้ปัญหาเดียวกัน

ฉันได้ยินว่าฉันสามารถใช้DDเพื่อทำมิรเรอร์พาร์ติชัน 40G ไปยังไดรฟ์ 160G หรือว่าฉันสามารถบันทึกพาร์ติชัน 40G เป็นรูปภาพในระบบภายในเครื่องของฉันแล้วคัดลอกอิมเมจ 40G นั้นไปยังไดรฟ์ 160G

มีใครอธิบายได้บ้างว่าฉันจะทำสิ่งนี้ได้อย่างไร ฉันต้องการโปรแกรมอรรถประโยชน์อื่น ๆ เช่นgparted หรือไม่


3
Ahha ... นี่เป็นคำถามแรก !!
Harshit Shrivastava

2
คำถามหมายเลขหนึ่ง! ฉันยังเป็นผู้เสนอสำหรับเว็บไซต์นี้และฉันคิดว่าฉันจะเริ่มต้นเว็บไซต์ด้วยคำถามทางเทคนิคที่เป็นธรรม ฉันได้รับรางวัลด้วยเสื้อยืดและพวงหรีด
Stefan Lasiewski

คำตอบ:


6

งานแรกของคุณคือการเชื่อมต่อดิสก์ทั้งสองกับระบบ Linux ที่มีอยู่หรือเชื่อมต่อดิสก์ใหม่กับระบบดั้งเดิม

คุณต้องระวังให้มากเพราะมันง่ายมากที่จะคัดลอกดิสก์เปล่าที่อยู่ด้านบนของดิสก์ที่ดี!

ในการจบภาคบูทและคุณต้องทำสิ่งต่อไปนี้

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

hdxดิสก์ 40G ของคุณอยู่ที่ไหนและhdyเป็นดิสก์ 160G ของคุณ /dev/hdx1คุณจะสังเกตเห็นว่าไม่มีหมายเลขพาร์ทิชันเช่น นี่เป็นการคัดลอกดิสก์ทั้งหมดข้อมูลพาร์ติชันและทั้งหมด

ดิสก์ใหม่ของคุณจะเหมือนกับดิสก์เก่า 40G ที่ถูกจัดสรร มันควรบู๊ตขึ้นมาเมื่อวางไว้ในแล็ปท็อปของคุณ หวังว่าคุณจะใช้ LVM? เป็นอย่างอื่นหวังว่าคุณไม่ได้ใช้พาร์ทิชันทั้งหมดหรือไม่ การผ่านจุดนี้ไปจะต้องใช้ข้อมูลมากขึ้น

อีกวิธีหนึ่งคือการถ่ายโอนข้อมูลแต่ละพาร์ติชัน สิ่งนี้ต้องการการรับรู้สถานการณ์มากขึ้นเนื่องจากคุณจะต้องสร้างข้อมูลการบูตขึ้นใหม่

ทั้งหมดนี้ใช้ดีที่สุดสำหรับการโคลนคอมพิวเตอร์ไม่ใช่การอัพเกรดฮาร์ดดิสก์ มันจะดีกว่ามากที่จะเรียกคืนการติดตั้งใหม่โดยใช้การสำรองข้อมูลของคุณ


17

โดยปกติฉันจะแนะนำวิธีแก้ปัญหาเช่น "เชื่อมต่อฮาร์ดไดรฟ์ตัวที่ 2 โดยใช้กล่องหุ้มภายนอกบูตจากลินุกซ์ซีดีจากนั้นใช้คำสั่งเช่นdd if=/dev/sda of=/dev/sdb bs=1Gแต่เนื่องจากคุณต้องการใช้เทคนิคเดียวกันกับงานฉันมีสิ่งที่อาจเป็น ทางออกที่ดีกว่า

ทั้งหมดของเซิร์ฟเวอร์และแล็ปท็อปของฉันได้รับการถ่ายภาพในที่ทำงานโดยใช้Clonezilla มีสองวิธีในการใช้มัน ... หนึ่งในนั้นใช้เซิร์ฟเวอร์เฉพาะและอาจ overkill สำหรับคุณและอีกวิธีหนึ่งซึ่งใช้แผ่นซีดีบูตและฮาร์ดไดรฟ์ภายนอก

แนวคิดก็คือคุณบูตด้วย CD Clonezilla และมีไดรฟ์ USB ภายนอกขนาดใหญ่กว่าไดรฟ์ภายนอก Clonezilla นำคุณไปสู่การสร้างอิมเมจของไดรฟ์ที่มีอยู่หลังจากนั้นคุณปิดเครื่องเปลี่ยนไดรฟ์จากนั้นบู๊ตกลับสู่ Clonezilla และนำคุณไปสู่การกู้คืนข้อมูล

สิ่งนี้จะทำให้คุณมีโอกาสในการ A) นำภาพไปไว้ในไดรฟ์ที่ใหญ่กว่าและ B) เก็บข้อมูลสำรองไว้


5

ในขณะที่คุณสามารถใช้ dd เพื่อคัดลอกดิสก์แบบนั้นได้ แต่มีข้อเสียมากมาย:

  1. ปลายทางต้องมีขนาดเท่ากันหรือใหญ่กว่าแหล่งที่มาอย่างแน่นอน
  2. หลังจากคัดลอกคุณจะต้องปรับขนาดพาร์ติชันเพื่อใช้พื้นที่เพิ่มเติม
  3. คุณจะเสียเวลาในการคัดลอกพื้นที่ว่าง
  4. การแตกแฟรกเมนต์ใด ๆ ที่มีอยู่ในดิสก์เก่าจะถูกสงวนไว้

การใช้โปรแกรมสร้างภาพเช่น Ghost4Linux, partclone หรือ clonezilla เป็นอย่างน้อยจะดูแลหมายเลข 2 และ 3 คุณสามารถฟอร์แมตดิสก์ใหม่ติดตั้งและคัดลอกไฟล์ทั้งหมดด้วยcp -ax(เป็น root) จากนั้นติดตั้งใหม่ บูตโหลดเดอร์ในไดรฟ์ใหม่ วิธีนี้ไม่ได้รับผลกระทบใด ๆ ข้างต้น


3

หากต้องการคัดลอกพาร์ติชันคุณสามารถใช้dd if=/dev/srcDrive of=/dev/dstDriveหรืออะไรแบบนี้ ผมอยากจะแนะนำให้คุณอ่านมันหน้าคน ขออภัยฉันไม่สามารถให้ข้อมูลเพิ่มเติมได้อีกเนื่องจากฉันทำงานอยู่ในขณะนี้ ..


2

คุณถามว่าจะทำกับ DD แต่ฉันมีความสำเร็จที่ดีกว่าท่อส่งออกของการถ่ายโอนข้อมูลเข้าเรียกคืน รับad1s1aต้นทางและad2s1aเป้าหมาย:

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

ฉันลองสิ่งนี้ใน FreeBSD จริง ๆ แล้วฉันพบมันบนFreeBSD Forum


1

ตัวอย่างง่ายๆอย่างหนึ่งคือ:

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

แต่ถ้าคุณมีความต้องการพิเศษคุณควรอ่าน manpage (man dd) หรือค้นหาใน Google

ความคิดอื่นอาจเป็นการใช้rsync (อย่าลืมตั้งค่าตัวเลือกที่เหมาะสมเช่น -az [แพ็คเกจไฟล์แทนการคัดลอกหนึ่งไฟล์หลังจากที่อื่น] หรือ --numeric-ids [ใช้ uid / gid แทนชื่อเช่น "root"] และอื่น ๆ ) ลิงค์มีตัวอย่างมากมาย

หาก HDD ใหม่ไม่มีพาร์ติชันคุณสามารถใช้ gparted หรือ palimpset

เมื่อคุณไม่แน่ใจฉันจะฟอร์แมต HDD แล้วซิงค์ข้อมูลด้วย rsync


1

ฉันได้ทำการโยกย้ายข้อมูลแบบนี้โดยการบู๊ตด้วยดิสก์ที่แนบมาและซีดีสด

  1. คุณสร้างข้อมูลพาร์ติชั่นใหม่ของดิสก์ตัวที่หนึ่งในพาร์ติชั่นที่สอง, อาจทำให้พาร์ติชั่นบางส่วนใหญ่ขึ้นเพื่อใช้พื้นที่พิเศษ, และอื่น ๆ
  2. จากนั้นสมมติว่าคุณมี / dev / sda {1,2,3,4} และต้องการคัดลอกไปยัง / dev / sdb {1,2,3,4} คุณ mkdir / mnt / sd {a, b} {1 , 2,3,4} และเมานต์พาร์ติชั่นแต่ละตัวในแต่ละ dir (หรือถ้าคุณต้องการทำทีละตัวคุณสามารถสร้าง / mnt / origin / mnt / ปลายทางและ mount / umount แต่ละคู่)
  3. จากนั้นคุณทำ cp -avr / mnt / origin / / mnt / destination / (หรือ cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. รอขณะที่คุณท่องเว็บ :)
  5. จำไว้ว่าให้ติดตั้งด้วงลิโลหรือตัวจัดการบู๊ตที่คุณใช้

ด้วยวิธีการที่คุณจะจัดเรียงไฟล์ตามที่ถูกคัดลอกคุณยังสามารถเปลี่ยนระบบไฟล์ในพาร์ติชั่น (ย้ายจาก reiserfs หรือ ext3 เป็น ext4 ฯลฯ ) แต่โปรดจำไว้ว่าให้แก้ไข / etc / fstab หลังจากคัดลอกให้เหมาะสม สถานการณ์ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.