Làm cách nào tôi có thể sử dụng DD để di chuyển dữ liệu từ ổ đĩa cũ sang ổ đĩa mới?


29

Tôi đang nâng cấp ổ cứng SATA nội bộ trên máy tính xách tay của mình từ ổ 40G lên ổ 160G. Tôi có máy tính để bàn Linux / Ubuntu có thẻ SATA. Tôi thực sự muốn làm điều tương tự cho một vài hộp CentOS & FreeBSD tại nơi làm việc, và có vẻ như điều này sẽ có cùng một giải pháp.

Tôi đã nghe nói rằng tôi có thể sử dụng DD để phản chiếu phân vùng 40G sang ổ 160G hoặc tôi có thể lưu phân vùng 40G dưới dạng hình ảnh trên hệ thống cục bộ của mình, sau đó sao chép hình ảnh 40G đó vào ổ 160G.

Bất cứ ai có thể mô tả làm thế nào tôi có thể làm điều này? Tôi có cần bất kỳ tiện ích nào khác không, chẳng hạn như gparted


3
Ahha ... Đây là câu hỏi đầu tiên !!
Harshit Shrivastava

2
Câu hỏi số một! Tôi cũng là người đề xuất cho trang web này và tôi nghĩ rằng tôi đã khởi động trang web bằng một câu hỏi khá kỹ thuật. Tôi đã được thưởng một chiếc áo phông và một ít swag.
Stefan Lasiewski

Câu trả lời:


6

Nhiệm vụ đầu tiên của bạn là kết nối cả hai đĩa với một hệ thống Linux hiện có hoặc kết nối đĩa mới với hệ thống ban đầu.

Bạn phải rất cẩn thận vì rất đơn giản để sao chép đĩa trống trên đầu đĩa tốt!

Để kết thúc với các thành phần khởi động và tất cả, bạn sẽ làm một cái gì đó như:

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

hdxĐĩa 40G của bạn ở đâu và hdylà đĩa 160G của bạn. Bạn sẽ nhận thấy không có số phân vùng như thế nào /dev/hdx1. Điều này sao chép toàn bộ đĩa, thông tin phân vùng và tất cả.

Đĩa mới của bạn sẽ giống như đĩa cũ, được phân bổ 40G. Nó sẽ khởi động ngay khi đặt lại vào máy tính xách tay của bạn. Hy vọng bạn đã sử dụng LVM? Nếu không thì hy vọng bạn không sử dụng tất cả các phân vùng? Vượt qua điểm này đòi hỏi nhiều thông tin hơn.

Một giải pháp khác là đổ từng phân vùng riêng lẻ. Điều này đòi hỏi nhiều nhận thức tình huống hơn vì bạn sẽ cần phải tạo lại thông tin khởi động.

Tất cả điều này được sử dụng tốt nhất để nhân bản máy tính, không nâng cấp đĩa cứng. Sẽ tốt hơn nhiều khi khôi phục cài đặt mới bằng cách sử dụng bản sao lưu của bạn.


17

Thông thường tôi sẽ đề xuất một giải pháp như "kết nối ổ cứng thứ 2 bằng cách sử dụng bao vây ngoài, khởi động từ đĩa CD linux, sau đó sử dụng một lệnh như dd if=/dev/sda of=/dev/sdb bs=1G, nhưng vì bạn muốn sử dụng cùng một kỹ thuật cho công việc, tôi có thể một giải pháp tốt hơn.

Tất cả các máy chủ và máy tính xách tay của tôi đều được tạo hình khi làm việc bằng Clonezilla . Có hai cách sử dụng nó ... một trong số đó sử dụng một máy chủ chuyên dụng và có thể là quá mức cần thiết cho bạn, và một cách khác sử dụng CD khởi động và ổ cứng ngoài.

Ý tưởng là bạn khởi động với Clonezilla CD và có ổ USB ngoài lớn hơn (lớn hơn ổ đĩa nguồn). Clonezilla dẫn bạn qua việc tạo một hình ảnh của ổ đĩa hiện có, sau đó bạn tắt nguồn máy, thay thế ổ đĩa, sau đó khởi động lại vào Clonezilla và nó sẽ đưa bạn qua việc khôi phục dữ liệu.

Điều này mang đến cho bạn cơ hội để A) đưa hình ảnh lên một ổ đĩa lớn hơn và B) giữ lại bản sao lưu dữ liệu.


5

Mặc dù bạn có thể sử dụng dd để sao chép một đĩa như vậy, nhưng làm như vậy có một số nhược điểm:

  1. Đích đến phải chính xác cùng kích thước hoặc lớn hơn nguồn
  2. Sau khi sao chép, bạn sẽ cần thay đổi kích thước các phân vùng để sử dụng bất kỳ không gian bổ sung nào
  3. Bạn sẽ lãng phí thời gian sao chép không gian trống
  4. Bất kỳ phân mảnh có trong đĩa cũ được bảo tồn

Sử dụng một chương trình hình ảnh như Ghost4Linux, partclone hoặc clonezilla ít nhất sẽ chăm sóc các số 2 và 3. Bạn cũng có thể định dạng đĩa mới, gắn nó và sao chép tất cả các tệp qua cp -ax(với quyền root), sau đó cài đặt lại bộ tải khởi động trên ổ đĩa mới. Phương pháp này không bị bất kỳ nhược điểm nào ở trên.


3

Để chỉ cần sao chép phân vùng, bạn có thể sử dụng dd if=/dev/srcDrive of=/dev/dstDrivehoặc một cái gì đó như thế này. Tôi muốn giới thiệu bạn để đọc trang người đàn ông của nó . Xin lỗi tôi không thể cung cấp thêm thông tin, vì tôi đang làm việc ..


2

Bạn đã hỏi làm thế nào để làm điều đó với dd, nhưng tôi đã thành công hơn khi chuyển đầu ra của bãi chứa vào khôi phục . Cho nguồn ad1s1aad2s1a đích :

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

Tôi đã thử nó trên FreeBSD, thực sự tôi đã tìm thấy nó trên Diễn đàn FreeBSD


1

Một ví dụ đơn giản là:

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

Nhưng nếu bạn có một số nhu cầu đặc biệt, bạn thực sự nên đọc manpage (man dd) hoặc tìm kiếm trên Google.

Một ý tưởng khác có thể là việc sử dụng rsync (đừng quên đặt các tùy chọn phù hợp, như -az [gói các tệp thay vì sao chép tệp này sau tệp khác] hoặc --numeric-id [sử dụng uid / gid thay vì tên như "root"] và có thể một số người khác). Liên kết chứa nhiều ví dụ.

Nếu ổ cứng mới không có phân vùng, bạn có thể sử dụng gparted hoặc palimpset.

Khi bạn không chắc chắn, tôi sẽ định dạng ổ cứng và sau đó đồng bộ hóa dữ liệu với rsync.


1

Vâng, tôi đã thực hiện di chuyển tương tự như vậy bằng cách khởi động với cả hai đĩa được đính kèm và một đĩa CD Live.

  1. Bạn tạo lại thông tin phân vùng của đĩa thứ nhất trong đĩa thứ hai, có thể làm cho một số phân vùng lớn hơn để sử dụng thêm không gian, và như vậy.
  2. Sau đó, giả sử bạn có / dev / sda {1,2,3,4} và muốn sao chép chúng vào / dev / sdb {1,2,3,4}, bạn mkdir / mnt / sd {a, b} {1 , 2,3,4} và gắn kết từng phân vùng trong mỗi thư mục (hoặc nếu bạn muốn làm từng cái một, bạn có thể tạo / mnt / origin / mnt / Destination và mount / umount mỗi cặp)
  3. Sau đó, bạn làm một cp -avr / mnt / origin /. / mnt / đích / (hoặc một cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Đợi trong khi bạn duyệt web :)
  5. Hãy nhớ bản thân để cài đặt lại grub, lilo hoặc bất kỳ trình khởi động nào bạn sử dụng.

Làm theo cách đó bạn sẽ chống phân mảnh các tệp khi chúng được sao chép, bạn cũng có thể thay đổi các hệ thống tệp trong các phân vùng (di chuyển từ reiserfs hoặc ext3 sang ext4, v.v.), nhưng hãy nhớ chỉnh sửa / etc / fstab sau khi sao chép cho phù hợp tình hình mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.