it-swarm-vi.tech

Sử dụng DD để nhân bản đĩa

Có một số câu hỏi liên quan đến các công cụ nhân bản đĩa và dd đã được đề xuất ít nhất một lần. Bản thân tôi đã cân nhắc sử dụng dd, chủ yếu vì dễ sử dụng và nó có sẵn trên hầu hết các bản phân phối Linux có khả năng khởi động.

Cách tốt nhất để sử dụng dd để sao chép đĩa là gì? Tôi đã thực hiện một tìm kiếm nhanh trên Google và kết quả đầu tiên là rõ ràng thất bại . Có bất cứ điều gì tôi cần làm sau khi sử dụng dd, tức là có bất cứ điều gì KHÔNG THỂ được đọc bằng cách sử dụng dd không?

187
falstro

dd chắc chắn là công cụ nhân bản tốt nhất, nó sẽ tạo ra một bản sao 100% chỉ bằng cách sử dụng lệnh sau. Tôi chưa bao giờ có bất kỳ vấn đề với nó.

dd if=/dev/sda of=/dev/sdb bs=32M

Xin lưu ý rằng trong khi nhân bản từng byte, bạn không nên sử dụng điều này trên một ổ đĩa hoặc phân vùng đang được sử dụng. Đặc biệt là các ứng dụng như cơ sở dữ liệu không thể đối phó với điều này rất tốt và bạn có thể kết thúc với dữ liệu bị hỏng.

165
Adam Gibbins

Để tiết kiệm dung lượng, bạn có thể nén dữ liệu được tạo bởi dd bằng gzip, ví dụ:

dd if=/dev/hdb | gzip -c  > /image.img

Bạn có thể khôi phục đĩa của mình bằng:

gunzip -c /image.img.gz | dd of=/dev/hdb

Để tiết kiệm nhiều dung lượng hơn, hãy chống phân mảnh ổ đĩa/phân vùng mà bạn muốn sao chép trước (nếu thích hợp), sau đó loại bỏ tất cả không gian chưa sử dụng còn lại, giúp gzip dễ dàng nén hơn:

mkdir /mnt/hdb
mount /dev/hdb /mnt/hdb
dd if=/dev/zero of=/mnt/hdb/zero

Đợi một chút, dd cuối cùng sẽ thất bại với thông báo "đĩa đầy", sau đó:

rm /mnt/hdb/zero
umount /mnt/hdb
dd if=/dev/hdb | gzip -c  > /image.img

Ngoài ra, bạn có thể nhận được một quá trình dd đang chạy trong nền để báo cáo trạng thái bằng cách gửi tín hiệu bằng lệnh kill, ví dụ:

dd if=/dev/hdb of=/image.img &
kill -SIGUSR1 1234

Kiểm tra hệ thống của bạn - lệnh trên dành cho các lệnh dd Linux, OSX và BSD khác nhau trong các tín hiệu mà chúng chấp nhận (OSX sử dụng SIGINFO - bạn có thể nhấn Ctrl+T để báo cáo tình trạng).

119
David Hicks

[~ # ~] thận trọng [~ # ~] : việc hệ thống tệp trực tiếp có thể làm hỏng tệp. Lý do rất đơn giản, nó không có hiểu biết về hoạt động của hệ thống tập tin có thể đang diễn ra và không cố gắng giảm thiểu nó. Nếu một bài viết được thực hiện một phần, bạn sẽ nhận được một phần ghi. Điều này thường không tốt cho mọi thứ và thường gây tử vong cho cơ sở dữ liệu. Hơn nữa, nếu bạn làm hỏng các tham số dễ mắc lỗi đánh máy if của Khốn cho bạn Trong hầu hết các trường hợp, rsync là một công cụ hiệu quả tương đương được viết sau khi xuất hiện đa nhiệm và sẽ cung cấp chế độ xem nhất quán của từng tệp riêng lẻ .

Tuy nhiên, DD nên nắm bắt chính xác trạng thái bit của ổ đĩa chưa được đếm. Bộ tải khởi động, khối lượng llvm, UUID phân vùng và nhãn, v.v. Chỉ cần đảm bảo rằng bạn có một ổ đĩa có khả năng phản chiếu bit ổ đĩa đích một chút.

39
jldugger

Khi sử dụng dd để sao chép một đĩa có thể chứa các thành phần xấu, hãy sử dụng "conv = noerror, sync" để đảm bảo rằng nó không dừng khi gặp lỗi và điền vào (các) vùng bị thiếu bằng byte rỗng. Đây thường là bước đầu tiên tôi thực hiện nếu cố gắng khôi phục từ đĩa bị lỗi hoặc bị lỗi - lấy một bản sao trước khi thực hiện bất kỳ nỗ lực khôi phục nào, và sau đó thực hiện khôi phục trên đĩa tốt (nhân bản). Tôi để nó cho công cụ khôi phục để đối phó với bất kỳ khu vực trống nào không thể được sao chép.

Ngoài ra, bạn có thể thấy tốc độ của dd có thể bị ảnh hưởng bởi cài đặt bs (kích thước khối). Tôi thường thử bs = 32768, nhưng bạn có thể muốn thử nghiệm nó trên hệ thống của riêng bạn để xem cái gì hoạt động nhanh nhất cho bạn. (Điều này giả định rằng bạn không cần sử dụng kích thước khối cụ thể vì một lý do khác, ví dụ: nếu bạn đang ghi vào băng.)

26
TimB

Để sao chép một đĩa, tất cả những gì bạn thực sự cần làm là chỉ định đầu vào và đầu ra cho dd:

dd if=/dev/hdb of=/image.img

Tất nhiên, đảm bảo rằng bạn có quyền thích hợp để đọc trực tiếp từ/dev/hdb (Tôi khuyên bạn nên chạy bằng root) và/dev/hdb không được gắn (bạn không muốn sao chép trong khi đĩa đang được thay đổi - việc cài đặt dưới dạng chỉ đọc cũng được chấp nhận). Sau khi hoàn thành, image.img sẽ là bản sao byte cho toàn bộ đĩa.

Có một vài hạn chế khi sử dụng dd để sao chép đĩa. Đầu tiên, dd sẽ sao chép toàn bộ đĩa của bạn, thậm chí cả không gian trống và nếu được thực hiện trên một đĩa lớn có thể dẫn đến một tệp hình ảnh cực kỳ lớn. Thứ hai, dd cung cấp hoàn toàn không có chỉ dẫn tiến bộ, có thể gây bực bội vì bản sao mất nhiều thời gian. Thứ ba, nếu bạn sao chép hình ảnh này sang các ổ đĩa khác (một lần nữa, sử dụng dd), chúng phải lớn hơn hoặc lớn hơn đĩa gốc, nhưng bạn sẽ không thể sử dụng bất kỳ không gian bổ sung nào bạn có thể có trên đĩa đích cho đến khi bạn Thay đổi kích thước phân vùng của bạn.

Bạn cũng có thể thực hiện sao chép trực tiếp từ đĩa sang đĩa:

dd if=/dev/hdb of=/dev/hdc

nhưng bạn vẫn phải chịu những hạn chế ở trên về không gian trống.

Theo như các vấn đề hoặc vấn đề về vấn đề này, dd, phần lớn, thực hiện một công việc tuyệt vời. Tuy nhiên, cách đây một thời gian tôi có một ổ cứng sắp chết, vì vậy tôi đã sử dụng dd để thử và sao chép thông tin nào tôi có thể tắt nó trước khi nó chết hoàn toàn. Sau đó, người ta đã biết rằng dd không xử lý lỗi đọc rất tốt - có một số cung trên đĩa mà dd không thể đọc được, khiến dd từ bỏ và dừng sao chép. Tại thời điểm đó, tôi không thể tìm cách nói với dd để tiếp tục mặc dù gặp phải lỗi đọc (mặc dù nó xuất hiện như thể nó có cài đặt đó), vì vậy tôi đã dành khá nhiều thời gian để chỉ định thủ công bỏ qua và tìm cách nhảy qua các phần không thể đọc được.

Tôi đã dành thời gian nghiên cứu các giải pháp cho vấn đề này (sau khi tôi đã hoàn thành nhiệm vụ) và tôi đã tìm thấy một chương trình có tên ddresTHER , theo trang web, hoạt động như dd nhưng vẫn tiếp tục đọc ngay cả khi nó gặp phải lỗi. Tôi chưa bao giờ thực sự sử dụng chương trình, nhưng nó đáng để xem xét, đặc biệt là nếu đĩa bạn sao chép từ cũ, có thể có các thành phần xấu ngay cả khi hệ thống xuất hiện tốt.

17
Kyle Cronin

Nếu ổ đĩa nguồn bị hỏng hoàn toàn, bạn sẽ gặp nhiều may mắn hơn khi sử dụng dd_rhelp với dd_rescue (sở thích cá nhân của tôi) hoặc GNU ddrescue .

Lý do đằng sau điều này là, về lỗi đọc, dd tiếp tục cố gắng và cố gắng - cố gắng trong một thời gian dài để thời gian chờ xảy ra. dd_rescue thực hiện những việc thông minh như đọc lỗi, sau đó chọn một điểm khác trên đĩa và đọc ngược lại lỗi cuối cùng và dd_rhelp về cơ bản là một dd_rescue trình quản lý phiên - khởi động và nối lại khéo léo dd_rescue chạy để làm cho nó nhanh hơn một lần nữa.

Kết quả cuối cùng của dd_rhelp là dữ liệu tối đa được phục hồi trong thời gian tối thiểu. Nếu bạn đi dd_rhelp đang chạy, cuối cùng nó cũng thực hiện công việc chính xác như dd cùng một lúc. Tuy nhiên, nếu dd gặp phải lỗi đọc ở byte 100 của đĩa 100Gb, bạn sẽ phải chờ rất lâu để khôi phục 9,999.900 byte * khác, trong khi dd_rhelp + dd_rescue sẽ phục hồi phần lớn dữ liệu nhanh hơn nhiều.

11
Ben Williams

Đĩa nguồn không được có bất kỳ hệ thống tập tin gắn kết. Khi người dùng có thể đọc thiết bị khối (root hoạt động), hãy chạy 'dd if =/dev/sda ....'

Bây giờ, một trong những điều thú vị ở đây là bạn đang tạo ra một luồng byte ... và bạn có thể làm rất nhiều với điều đó: nén nó, gửi nó qua mạng, chia nó thành các đốm nhỏ hơn, v.v.

Ví dụ:

dd if=/dev/sda | ssh [email protected] "cat > backup.img"

Nhưng mạnh mẽ hơn:

dd if=/dev/sda | pv -c | gzip | ssh [email protected] "split -b 2048m -d - backup-`hostname -s`.img.gz"

Ở trên sao chép một hình ảnh nén của ổ cứng nguồn vào một hệ thống từ xa, nơi nó lưu nó trong các khối 2G được đánh số bằng cách sử dụng tên của Máy chủ nguồn trong khi vẫn cập nhật cho bạn về tiến trình.

Lưu ý rằng tùy thuộc vào kích thước của đĩa, tốc độ của cpu trên nguồn, tốc độ của cpu khi đến đích, tốc độ của mạng, v.v. Bạn có thể muốn bỏ qua việc nén hoặc thực hiện nén ở phía từ xa hoặc cho phép nén ssh.

7
retracile

Để sao chép đĩa, tất cả những gì bạn thực sự cần làm là chỉ định đầu vào và đầu ra thành dd:

dd if=/dev/hdb of=hdb.img

Tất nhiên, đảm bảo rằng bạn có quyền thích hợp để đọc trực tiếp từ /dev/hdb (Tôi khuyên bạn nên chạy bằng root) và đó là /dev/hdb không được gắn kết (bạn không muốn sao chép trong khi đĩa đang được thay đổi). Sau khi hoàn thành, hdb.img sẽ là một bản sao từng byte của toàn bộ đĩa.

Có một vài hạn chế khi sử dụng dd để sao chép đĩa. Đầu tiên, dd sẽ sao chép toàn bộ đĩa của bạn, thậm chí cả không gian trống và nếu được thực hiện trên một đĩa lớn có thể dẫn đến một tệp hình ảnh cực kỳ lớn. Thứ hai, dd hoàn toàn không cung cấp chỉ dẫn tiến trình, điều này có thể gây bực bội vì bản sao mất nhiều thời gian. Thứ ba, nếu bạn sao chép hình ảnh này sang các ổ đĩa khác (một lần nữa, sử dụng dd), chúng phải lớn hơn hoặc lớn hơn đĩa gốc, nhưng bạn sẽ không thể sử dụng bất kỳ không gian bổ sung nào bạn có thể có trên đĩa đích cho đến khi bạn Thay đổi kích thước phân vùng của bạn.

Bạn cũng có thể thực hiện sao chép trực tiếp từ đĩa sang đĩa:

dd if=/dev/hdb of=/dev/hdc

nhưng bạn vẫn phải chịu những hạn chế ở trên về không gian trống.

Hạn chế đầu tiên có thể được giải quyết bằng cách lấy dữ liệu khi bạn tạo bản sao. Ví dụ:

dd if=/dev/hdb | gzip -9 > hdb.img.gz

Hạn chế thứ hai có thể được giải quyết bằng cách sử dụng công cụ pipeview (pv). Ví dụ:

dd if=/dev/hdb | (pv -s `fdisk -l /dev/hdb | grep -o '[0-9]*\{1\} MB' | awk '{print $1}'`m) | cat > hdb.img

Tôi biết không có cách nào để khắc phục nhược điểm thứ ba.

Ngoài ra, bạn có thể tăng tốc thời gian sao chép bằng cách yêu cầu dd hoạt động với khối dữ liệu lớn hơn. Ví dụ:

dd if=/dev/hdb of=hdb.img bs=1024
6
James Sumners

Một điều thú vị khác bạn có thể làm với dd và đĩa cứu hộ là sao chép dữ liệu qua mạng:

remote_machine$ nc -l -p 12345

local_machine$ dd if=/dev/sda | nc remote_machine 12345

Bạn có thể dính gzip vào cả hai đường ống này nếu mạng không cục bộ. Để biết tiến trình, hãy sử dụng pv. Để khiến netcat của local_machine thoát ra sau khi sao chép xong, bạn có thể thêm -w 5 hoặc một cái gì đó.

5
user5692

Hãy nhớ rằng dd tạo một bản sao chính xác, bao gồm tất cả các khoảng trống.

Điều đó có nghĩa là:

  1. Ổ đĩa thứ 2 ít nhất phải lớn như ổ đĩa thứ nhất
  2. Nếu ổ đĩa thứ 2 lớn hơn, không gian thừa sẽ bị lãng phí (hệ thống tập tin có thể được mở rộng tâm trí bạn)
  3. Nếu ổ đĩa nguồn không đầy, dd sẽ lãng phí rất nhiều thời gian để sao chép không gian trống.
  4. Bạn có thể sao chép toàn bộ ổ đĩa hoặc một phân vùng theo cách này.
  5. Nếu đây là ổ đĩa có khả năng khởi động, tôi khá chắc chắn rằng bạn cần cài đặt bộ tải khởi động sau khi sử dụng dd

Hy vọng rằng nó hữu ích

4
Brent
dd if=/dev/sda of=/dev/sdb bs=4096 conv=sync,noerror

Điều này sẽ sao chép đĩa và bỏ qua các khối có lỗi, điều này rất quan trọng.

Đây là các tùy chọn cơ bản và cần thiết để sử dụng dd để sao chép hoặc cứu đĩa.

Tôi không muốn đăng một câu trả lời khác, nhưng không có câu trả lời hay với các tùy chọn "conv = sync, noerror" thiết yếu trong số 25 tùy chọn đã được đăng.

4
Sam Watkins

Bạn thực sự có thể thử một cái gì đó như thế này

[.___

bỏ qua tất cả các lỗi và có bản sao chính xác của phân vùng hoặc ổ cứng

3
hirol

Một tính năng lớn khác là sao chép MBR, bảng phân vùng và bản ghi khởi động.

Chỉ

dd if=/dev/sda of=parttable bs=512 count=1

và hướng khác xung quanh khi bạn viết nó. Tiếng Ba Lan với fdisk sau.

Bạn cảm thấy an toàn hơn nhiều khi sao lưu bảng phân vùng.

Ngoài ra, nó làm cho việc di chuyển sang một ổ đĩa cứng khác (trong khi thay đổi cấu trúc chia tay) là một niềm vui.

3
alamar

Để tham khảo trong tương lai, có thể quan tâm để kiểm tra ddresTHER . Nó đã cứu ngày của tôi một vài lần.

3
Anders Hansson

Đây là một loại hack rẻ tiền, nhưng nó là một cách nhanh chóng và bẩn thỉu để theo dõi quá trình DD của bạn.

Chạy lệnh dd của bạn. Mở Shell mới và thực hiện ps awx để tìm quy trình dd của bạn. Bây giờ trong đồng hồ kiểu Shell mới -n 10 kill -USR1 {pid của quy trình DD của bạn}

Điều này sẽ không làm gì trong cửa sổ đầu ra của đồng hồ, nhưng trở lại trong DD Shell ban đầu, DD sẽ bắt đầu xuất báo cáo trạng thái cứ sau 10 giây. Tất nhiên, bạn có thể thay đổi -n 10 trong lệnh xem sang bất kỳ khung thời gian nào khác.

Tê giác

3
Tachyon

Hầu hết các thông tin được mô tả trong các lần nhận được chèn trước đó, nhưng không phải tất cả đều được mô tả.

Trong linux bạn có thể sao chép ổ cứng hoặc phân vùng bằng lệnh dd. Chú ý, khi bạn mắc lỗi, bạn sẽ mất tất cả dữ liệu của mình.

Lúc đầu, không nên sử dụng đích, không nên sử dụng nguồn thứ hai hoặc chuyển sang chế độ chỉ đọc. Nếu không, bản sao sẽ bị hỏng. Nếu không thể kết nối lại, vui lòng tạo ổ đĩa khởi động (hdd/ssd/Pendrive) bất kỳ bản phân phối trực tiếp linux nào. Tôi prever knoppix, nhưng đây là lựa chọn của bạn. Nếu có thể, bạn có thể khởi động hoặc thay đổi cấp độ hệ thống thành 1, đối với chế độ người dùng đơn hoặc bạn có thể trực tiếp khởi động lại hệ thống sang chế độ người dùng duy nhất, đó là bản phân phối phụ thuộc. Nếu bạn chỉ sao chép một phân vùng, phân vùng này sẽ được ngắt kết nối hoặc kết nối lại thành RO:

umount /mountpoint_or_device

hoặc là

remount -o,ro /mountpoint_or_device

Nếu bạn muốn sao chép toàn bộ ổ cứng, bạn phải đánh dấu hoặc đếm lại tất cả các phân vùng.

Bạn phải xác định thiết bị nguồn và đích. vui lòng xem dmesg, ở đây được lưu trữ tất cả thông tin cần thiết về thiết bị, với nhà cung cấp, vv việc xác định thay thế có thể dựa trên kích thước thiết bị, nếu nó khác. Tiếp theo, đích phải giống hoặc lớn hơn nguồn. bạn phải tính toán nguồn, ví dụ: fdisk -l/dev/sda ngoại trừ hình học phân vùng (có thể có GPT), bạn sẽ tìm nạp: 1. tổng kích thước đĩa với GB và byte 2. hình học lịch sử và tổng số ngành, thông tin rất quan trọng 3. kích thước khối tính theo byte, thường là 512.

ví dụ:

# fdisk -l /dev/sda

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f1d1e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap /     Solaris

tiếp theo, hãy thử chia lớn hơn 512, chúng ta có 41943040 ngành vật lý:

41943040/256 = 163840, rất tốt, chúng tôi có thể sao chép số lượng lớn 256 lĩnh vực. chúng ta có thể nhiều hơn? Hãy thử: 41943040/1024 = 40960, tôi nghĩ thế là đủ, chúng tôi sẽ chọn cái này. Hãy tính kích thước của nhóm ngành: 512 (kích thước ngành) * 1024 = 524288 byte eq 512K. Sau đó, chúng ta có thể sử dụng tham số bs = 512K hoặc ít hơn, nhưng chia giá trị này cho 2 ^ x. Đối với các ổ đĩa cứng hiện đại với bộ nhớ cache lớn bên trong, điều này là đủ thực tế. đối với các ổ đĩa cũ có bộ đệm nhỏ hơn nhiều, giá trị từ 32K trở xuống là đủ.

Sau đó, sau khi chuẩn bị, chúng ta có thể thực hiện một bản sao: dd if =/dev/source_devide of =/dev/Destination_device bs = 32K và việc sao chép sẽ được thực hiện. Hãy chú ý, bất kỳ sai lầm sẽ ghi đè lên dữ liệu nhập khẩu của bạn. Về đích tất cả sẽ được ghi đè.

Nếu bạn thử cứu dữ liệu trên đĩa nguồn bị hỏng, tốt hơn nên sử dụng kích thước cung riêng, thường là 512 byte và thêm tùy chọn conv = notrunc. nếu không, các lỗ hổng trong nguồn bị giảm bởi các thành phần xấu sẽ được nối bằng cách dịch chuyển theo điểm đến. Điều này sẽ làm hỏng bản sao với một vài cơ hội để sửa chữa. sau đó lệnh sẽ là:

dd if=/dev/source of=/dev/destination bs=512 conv=notrunc  

và chờ đợi thời gian dài khi ổ đĩa và hệ thống sẽ từ bỏ và sẽ đi từng khu vực đến cùng.

dd là công cụ hữu ích để di chuyển phân vùng vào nơi mới. Đơn giản chỉ cần tạo phân vùng, tạo dd thành phân vùng mới (cái này có thể lớn hơn, lớn hơn nhiều) và nếu có thể, hãy mở rộng hệ thống tệp đã sao chép để lấp đầy tất cả phân vùng mới, ext3/ext4/xfs/zfs/btrfs có cơ sở này. Cuối cùng, bạn phải thay đổi/etc/fstab, sau đó umount/mount nếu có thể hoặc khởi động lại hệ thống.

Tất nhiên bạn có thể sao chép bất kỳ loại phân vùng. Lệnh dd không nhìn vào loại hệ thống tệp, nó không làm gì với cấu trúc của nó. sau đó lệnh này có thể được sử dụng để nhân bản NTFS hoặc các loại phân vùng khác.

Có bất kỳ mẹo. Khi bạn không đặt tham số, thì dd sẽ đưa đầu ra vào thiết bị xuất chuẩn của nó. sau đó bạn có thể tạo bản sao thô của đĩa hoặc phân vùng, ví dụ:

dd if=/dev/sda bs=512 | gzip >/any/place/computerOne_sda.gz

Tất nhiên điều này nên được thực hiện ngoại tuyến. bạn có thể khôi phục điều này bằng cách:

zcat /any/place/computerOne_sda.gz| dd of=/dev/sda bs=512   

, sau đó tất cả ổ cứng sda sẽ bị ghi đè bởi bản sao lưu này và tất cả dữ liệu hiện tại sẽ bị mất. Bạn cũng có thể làm điều này với phân vùng windows NTFS và ổ cứng được sử dụng bởi cái này. Tất nhiên bạn có thể sử dụng lệnh nén khác, tùy thuộc vào lựa chọn của bạn.

2
Znik

Cách sao chép bằng dd (trong trường hợp này vào máy từ xa, nhưng nguyên tắc tương tự áp dụng cho bản sao cục bộ) cho thấy sự tiến bộ.

Nó hoạt động bằng cách lưu trữ pid thông qua mô tả tập tin 3 in/tmp/pid, sau đó được sử dụng cho các lần giết tiếp theo với tín hiệu USR1. Một nếp nhăn là để lọc đầu ra của tiến trình trên stderr thành chỉ một dòng thông qua lọc stderr thông qua một lớp con.

(dd bs=1M if=$lv-snapshot & echo $! >&3 ) 3>/tmp/pid  2> >(grep 'copied' 1>&2) | gzip --fast | ssh $DEST "gzip -d | dd bs=1M of=$lv" &
# Need this sleep to give the above time to run
sleep 1
PID=$(</tmp/pid)

while kill -0 $PID; do
  kill -USR1 $PID
  sleep 5
done
2
Edward Groenendaal

dd không cung cấp thông tin tiến trình - hầu hết các phiên bản trong linux. Tôi đã thấy một số thứ không nhưng không nhớ lại hương vị unix.

Trang hướng dẫn cho biết: Gửi tín hiệu USR1 đến quy trình ‘dd, làm cho nó in các số liệu thống kê I/O thành lỗi tiêu chuẩn và sau đó tiếp tục sao chép.

Tôi sử dụng tính năng này thường xuyên.

2
Steven

Ai đó đã phải nói điều này: hãy thử Clonezilla (http: // clonezilla.org/)

Bạn được những gì? Để sao chép chỉ các phần được sử dụng của hệ thống tập tin. Clonezilla sử dụng dd, grub, sfdisk, parted, partimage, ntfsclone và/hoặc partclone. Tùy thuộc vào các tùy chọn bạn chọn.

Tài liệu về Decent có thể được tìm thấy tại: http: // clonezilla.org/clonezilla-live/doc/

2
Roflo

Bạn có thể tạo tệp hình ảnh nén của phân vùng (hoặc đĩa) khi đang di chuyển bằng cách sử dụng bzip2 hoặc gzip thay vì dd. Điều này thật tuyệt khi lưu trữ hình ảnh trong phương tiện lưu động:

bzip2 -c /dev/sdaX >imagefile.bz2
or
gzip -c /dev/sdaX >imagefile.gz

Nếu đĩa đã được sử dụng nhiều trước đó, bạn có thể tăng cường nén bằng cách lấp đầy tất cả không gian chưa sử dụng bằng số không trước khi chụp ảnh:

mkdir /mnt/mymountpoint
mount /dev/sdaX /mnt/mymountpoint
cat /dev/zero >/mnt/mymountpoint/dummyfile.bin
(Wait for it to end with a "disk full" error)
rm /mnt/mymountpoint/dummyfile.bin
umount /mnt/mymountpoint

Để khôi phục hình ảnh vào đĩa khác, tất cả những gì bạn phải làm là:

bzcat imagefile.bz2 >/dev/sdbY
or
zcat imagefile.gz >/dev/sdbY
1
JCCyC

Một điều bạn phải lưu ý khi dd-ing một đĩa đầy đủ là làm như vậy sẽ ghi đè lên bản ghi khởi động chính của đĩa nhận. Điều này chứa bảng phân vùng và thông tin quan trọng khác. Nếu đĩa mới không giống với đĩa cũ, điều này có thể tạo ra tất cả các loại bảng. Sao chép trên các phân vùng thường an toàn hơn (và các phân vùng trao đổi không phải được sao chép qua)

0
Paul de Vrieze

Tôi đã rời khỏi vai trò quản trị viên trong nhiều năm nay, nhưng tôi biết rằng 'dd' phụ thuộc vào công việc. Tôi đã sử dụng kỹ thuật này thường xuyên vào cuối những năm 80 trên máy tính Sun Sparc và 386i. Tôi đã có một đơn đặt hàng của khách hàng trên 30 hệ thống 386i đang chạy CAD được phân phối trên nhiều băng QIC.

Chúng tôi đã cài đặt trên máy tính đầu tiên, định cấu hình ứng dụng, chạy sys-unconfig của SunOS, đặt ổ đĩa trong hộp đựng giày có địa chỉ SCSI khác và sau đó tiến hành 'dd' cho 30 ổ đĩa khác.

0
pbrooks100

Chỉ là một cảnh báo cho những người mới bắt đầu cần phải nói: Ít nhất là với một số Phiên bản, bs = X có nghĩa là bộ nhớ theo kích thước của X sẽ được phân bổ theo nghĩa đen. bs = 2GB trên hệ thống có 1GB RAM và trao đổi không đủ SILL gây ra những điều xấu xảy ra.

0
rackandboneman

Vì một số lý do, dd thất bại khi tạo đĩa CD với các rãnh âm thanh. Bạn cần sử dụng cdrdao hoặc một cái gì đó tương tự để có được một hình ảnh + tệp TOC.

0
Matt

Đối với khối lượng NTFS, tôi thích sử dụng ntfsclone . Đó là một phần của gói ntfspross .

0
Ed Brannin

Như những người khác đã đề cập ở trên, một trong những vấn đề nhân bản với hệ thống tập tin được gắn kết là tham nhũng dữ liệu tiềm năng. Điều này rõ ràng sẽ không áp dụng cho các bản sao ổ đĩa đầy đủ, nhưng nếu bạn đang sử dụng LVM, bạn có thể Chụp nhanh LogicalVolume và dd từ ảnh chụp nhanh để có được hình ảnh nhất quán.

0
Ophidian