Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

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

dd là một trong những lệnh quan trọng nhất trong Linux, chủ yếu dùng sao lưu ổ cứng và phân vùng. Khi dùng đúng, dd là công cụ mạnh mẽ ghi dữ liệu từ phân vùng này sang phân vùng khác và thực hiện tác vụ khác với file. Bài viết chỉ cách tận dụng tốt lệnh dd.

Câu chuyện của dd

Lệnh ban đầu phát triển tại AT&T Bell Laboratories thập niên 1970 bởi nhà khoa học máy tính Ken Thompson. Được phát triển cho hệ thống Unix-based và đặt tên tham chiếu câu lệnh trong Job Control Language của IBM, gọi là "DD". Có thể thấy cú pháp lệnh gần giống câu lệnh trong Job Control Language.

Lệnh ban đầu thiết kế là tiện ích chuyển đổi ASCII sang EBCDIC và ngược lại. Được tích hợp đầu tiên với phiên bản Unix năm 1974, với phát hành Edición thứ 5 của hệ điều hành.

dd được đùa gọi "disk destroyer" (hủy hoại ổ đĩa) trong cộng đồng Unix do khả năng phá hủy dữ liệu ổ cứng khi dùng sai.

Toán tử cơ bản (Basic Operands)

Biết chút về lịch sử lệnh và khả năng phá hủy khi dùng sai, giờ học cách tận dụng mọi thứ nó cung cấp cho người dùng các bản phân phối Linux khác nhau.

Trước hết, xem hướng dẫn bằng cờ --help:

dd --help

Có hai toán tử thường dùng nhất. Chúng là if và of, lần lượt là "input file" (file đầu vào) và "output file" (file đầu ra). Toán tử if đại diện vị trí nguồn, of đại diện vị trí lưu dữ liệu từ vị trí nhập.

dd if=<input file> of=<output file>

Vị trí nguồn và đích phổ biến nhất bao gồm ổ cứng, phân vùng, và file ảnh đĩa (disk images).

Trước khi dùng lệnh, hữu ích dùng tiện ích fdisk xem phân vùng trên hệ thống. Dễ dàng bằng cờ -l:

sudo fdisk -l

Trong trường hợp này, if đại diện ổ "/dev/sda", of đại diện "/dev/sdb", nơi dữ liệu từ "/dev/sda" lưu vào:

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

Tạo file ảnh đĩa (Disk Image)

Một trong những trường hợp dùng tốt nhất lệnh là tạo file ảnh đĩa định dạng ".img". Cực kỳ hữu ích sao lưu dữ liệu trên hệ thống Linux-based và có lẽ cách nhanh nhất, dễ nhất sao lưu toàn bộ ổ cứng.

Logic ở đây chủ yếu giống nhau, với if đại diện "/dev/sda" và of đại diện file ".img", nơi dữ liệu ổ cứng lưu vào:

dd if=/dev/sda of=example.img

Lưu file ảnh đĩa vào phân vùng

Tạo file ảnh đĩa với lệnh khá đơn giản, nhưng quá trình ngược cũng vậy.

Trong kịch bản này, file ảnh đĩa làm file đầu vào, phân vùng mới làm file đầu ra. Tiện ích lưu dữ liệu từ file ảnh đĩa vào phân vùng "/dev/sdb":

dd if=example.img of=/dev/sdb

Tạo file ảnh đĩa nén (Compressed Disk Image)

Nếu tạo file ảnh đĩa ổ cứng dung lượng đầy đủ, bạn tưởng tượng kích thước file ảnh cuối cùng sẽ khá lớn. Vì vậy, tiện ích dd có tính năng tạo file ảnh đĩa nén.

File ảnh đĩa nén tạo bằng cách dùng pipe |. Trong trường hợp này, dùng lấy nội dung file đầu vào và thực hiện lệnh gzip với cờ -c, nội dung được gói vào file ".gz":

dd if=/dev/sda | gzip -c > image.gz

Chỉ định kích thước khối (Block Size)

Bạn cũng có thể điều chỉnh tốc độ hoạt động lệnh dd. Hoàn thành bằng toán tử bs (block size). Kích thước khối đại diện số byte dd copy vào file đầu ra trong một lần. Được biểu diễn bằng bội số 1024 byte, giá trị mặc định 512 byte. Kích thước khối càng cao, dữ liệu lưu vào file đầu ra càng nhanh.

Trong trường hợp này, đặt kích thước khối 2048:

dd if=/dev/sda of=example.img bs=2048

Kích thước khối cũng chỉ định bằng kilobyte:

dd if=/dev/sda of=example.img bs=2048K

Xóa sạch ổ cứng (Wiping a Hard Disk)

dd cũng dùng xóa sạch ổ cứng. Hoàn thành bằng cách đọc số không (zeroes) hoặc ký tự ngẫu nhiên từ "/dev/zero" hoặc "/dev/urandom" lưu vào ổ cứng/phân vùng, ghi đè dữ liệu trên đó. Cực kỳ hữu ích khi muốn chắc chắn dữ liệu không dễ dàng khôi phục sau khi bán hoặc xử lý ổ cứng.

Ghi đè ổ cứng dùng số không:

dd if=/dev/zero of=/dev/sdb

Quá trình ghi đè cũng dùng ký tự ngẫu nhiên:

dd if=/dev/urandom of=/dev/sdb

Tạo USB bootable (Bootable USB Drive)

Tạo USB flash drive bootable dùng file ".iso" với lệnh đơn giản:

dd if=os.iso of=<USB drive location>

Tổng kết (Wrapping Up)

Có thể nói lệnh dd là "dao bác sĩ đa năng" (Swiss Army knife) nhờ hữu ích nhiều lĩnh vực và mọi thứ liên quan ổ cứng, phân vùng, file ảnh đĩa. Miễn là bạn không phá hủy ổ cứng, nó công cụ hiệu quả, đơn giản cho mọi thứ từ xóa ổ cứng/USB đến tạo bản sao lưu nén.