Lệnh dd trong Linux

dd là một tiện ích dòng lệnh dành cho hệ điều hành Unix và giống Unix, với mục đích chính là chuyển đổi và sao chép file.

Lệnh dd là gì?

Trên Unix, driver thiết bị cho phần cứng (chẳng hạn như ổ cứng) và các file thiết bị đặc biệt (chẳng hạn như /dev/zero và /dev/random) xuất hiện trong hệ thống file giống như các file bình thường.

dd là một tiện ích dòng lệnh dành cho hệ điều hành Unix

dd cũng có thể đọc và/hoặc ghi từ/vào các file này, miễn là chức năng đó được triển khai trong driver tương ứng của chúng

Do đó, dd có thể được sử dụng cho các tác vụ như sao lưu boot sector của ổ cứng và lấy một lượng dữ liệu ngẫu nhiên cố định.

Chương trình dd cũng có thể thực hiện các chuyển đổi trên dữ liệu khi nó được sao chép, bao gồm hoán đổi thứ tự byte và chuyển đổi sang và từ các mã hóa văn bản ASCII và EBCDIC.

Cách sử dụng lệnh dd

Cú pháp dòng lệnh của dd khác với nhiều chương trình Unix khác ở chỗ nó sử dụng cú pháp option=value cho các tùy chọn dòng lệnh của nó, thay vì các định dạng -option value hoặc –option=value chuẩn hơn. Theo mặc định, dd đọc từ stdin và ghi vào stdout, nhưng chúng có thể được thay đổi bằng cách sử dụng tùy chọn if (file đầu vào) và of (file đầu ra).

Lệnh dd

Một số ví dụ thực tế về lệnh dd

Sao lưu toàn bộ ổ cứng

Để sao lưu toàn bộ bản sao của ổ cứng này sang một ổ cứng khác được kết nối với cùng hệ thống, hãy thực thi lệnh dd như hình minh họa. Trong ví dụ lệnh dd này, tên thiết bị UNIX của ổ cứng nguồn là /dev/hda và tên thiết bị của ổ cứng đích là /dev/hdb.

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

“If” đại diện cho file đầu vào và “of” đại diện cho file đầu ra. Vì vậy, bản sao chính xác của /dev/sda sẽ có trong /dev/sdb.

Nếu có bất kỳ lỗi nào, lệnh trên sẽ thất bại. Nếu bạn cung cấp tham số “convert=noerror” thì tham số sẽ tiếp tục sao chép nếu có lỗi đọc.

File đầu vào và file đầu ra cần được đề cập rất cẩn thận. Bạn đề cập đến thiết bị nguồn trong mục tiêu và ngược lại, bạn có thể mất tất cả dữ liệu của mình.

Để sao chép ổ cứng vào ổ cứng bằng lệnh dd đưa ra bên dưới, tùy chọn đồng bộ cho phép bạn sao chép mọi thứ bằng cách sử dụng I/O được đồng bộ.

# dd if = /dev/sda of = /dev/sdb conv=noerror, sync

Sao lưu phân vùng

Bạn có thể sử dụng tên thiết bị của phân vùng trong file đầu vào và trong đầu ra, bạn có thể chỉ định đường dẫn đích hoặc file hình ảnh của mình như được hiển thị trong lệnh dd.

# dd if=/dev/hda1 of=~/partition.img

Tạo image của ổ cứng

Thay vì tạo bản sao lưu của ổ cứng, bạn có thể tạo file image của ổ cứng và lưu nó trong các thiết bị lưu trữ khác. Có nhiều ưu điểm của việc sao lưu dữ liệu vào disk image, một trong số đó là tính dễ sử dụng. Phương pháp này thường nhanh hơn so với các kiểu sao lưu khác, cho phép bạn nhanh chóng khôi phục dữ liệu sau một sự cố không mong muốn. Nó tạo ra image của ổ cứng /dev/hda.

# dd if = /dev/hda of = ~/hdadisk.img

Khôi phục image ổ cứng

Để khôi phục ổ cứng với file image của một ổ cứng khác, có thể sử dụng lệnh dd sau:

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

File image hdadisk.img là image của /dev/hda, vì vậy lệnh trên sẽ khôi phục image của /dev/hda thành /dev/hdb.

Tạo CDROM Backup

Lệnh dd cho phép bạn tạo một file ISO từ một file nguồn. Vì vậy, người dùng có thể chèn đĩa CD và nhập lệnh dd để tạo file ISO cho nội dung CD.

# dd if = /dev/cdrom of = tgsservice.iso bs = 2048

Lệnh dd đọc một khối dữ liệu đầu vào và xử lý nó, sau đó ghi nó vào một file đầu ra. Bạn có thể chỉ định kích thước khối cho file đầu vào và đầu ra. Trong ví dụ lệnh dd ở trên, tham số “bs” chỉ định kích thước khối cho cả file đầu vào và đầu ra. Vì vậy, dd sử dụng 2048 byte làm kích thước khối trong lệnh trên.