Bạn đã bao giờ sao chép, chuyển đổi, hoặc thậm chí khôi phục dữ liệu một cách mạnh mẽ trên hệ thống Linux của mình bằng dòng lệnh dd? Trong bài viết này hãy cũng Vietnix tìm hiểu chi tiết về lệnh dd, từ khái niệm cơ bản, cách sử dụng cho đến 7 ví dụ thực tế về cách sử dụng lệnh dd trong Linux.
Lệnh dd trong Linux là gì?
Lệnh dd trong Linux được sử dụng để sao chép và chuyển đổi file, không chỉ vậy mà còn chuyển đổi định dạng file. Điểm đặc biệt của Linux là hầu hết các thành phần hệ thống đều được xem như file. Vì vậy, lệnh dd có phạm vi ứng dụng rất rộng và hỗ trợ sao lưu, nén và chuyển đổi định dạng.
Cú pháp của lệnh dd tương đối đơn giản. Bạn chỉ cần nhập lệnh và nối tiếp là tùy chọn mong muốn:
dd [OPERAND]...
dd OPTION
Bên cạnh đó, bạn có thể tham khảo thêm một số bài viết về các câu lệnh trong Linux để hiểu thêm chi tiết về hệ điều hành.
10 tham số toán hạng của lệnh dd
Để tìm hiểu chi tiết về tất cả tham số của lệnh dd, bạn có thể xem trang hướng dẫn (man Page) bằng cách gõ lệnh man theo cú pháp sau trong cửa sổ terminal:
man dd
Tham số toán hạng | Mô tả |
bs=BYTES | Đọc hoặc ghi dữ liệu với kích thước khối là BYTES |
cbs=BYTES | Chuyển đổi dữ liệu với kích thước khối là BYTES |
conv=CONVS | Chuyển đổi dữ liệu với các chức năng sau ascii: Chuyển từ EBCDIC sang ASCII. ebcdic: Chuyển từ ASCII sang EBCDIC. lcase: Chuyển chữ hoa thành chữ thường. ucase: Chuyển chữ thường thành chữ hoa. |
sync | Đồng bộ hóa dữ liệu và siêu dữ liệu |
count | Chỉ định số lượng khối cần xử lý |
ibs=BYTES | Đọc dữ liệu với kích thước khối là BYTES |
of=FILE | Ghi dữ liệu vào FILE |
if=FILE | Đọc dữ liệu từ FILE |
seek=N | Bỏ qua N khối ở đầu file đích |
skip=N | Bỏ qua N khối ở đầu file nguồn |
Ngoài ra, bạn cũng có thể sử dụng các tiền tố nhị phân:
- KiB: Tương đương với K
- MiB: Tương đương với M
2 tùy chọn để sử dụng lệnh dd
Lệnh dd trong Linux có hai tùy chọn cơ bản khi sử dụng như sau:
Tuỳ chọn | Mô tả |
-help | Hiển thị trang trợ giúp, cung cấp thông tin chi tiết về cách sử dụng lệnh |
-version | Hiển thị thông tin phiên bản của lệnh dd |
7 ví dụ về cách sử dụng lệnh dd trong Linux
Ví dụ 1: Sao lưu toàn bộ ổ cứng hoặc phân vùng ổ đĩa
Lệnh dd trong Linux cho phép bạn sao chép toàn bộ ổ cứng hoặc một phân vùng cụ thể để tạo bản sao lưu. Để thực hiện lệnh, bạn cần sử dụng các tham số if
(input file – file đầu vào) và of
(output file – file đầu ra) để chỉ định ổ đĩa hoặc phân vùng nguồn và đích.
Bạn cũng có thể tùy chỉnh thêm quá trình sao lưu bằng cách:
- Sử dụng tham số
bs
để xác định số byte được đọc/ghi trong mỗi lần. - Sử dụng tham số
conv
với giá trịsync
để đồng bộ hóa việc đọc/ghi, đảm bảo dữ liệu được sao lưu một cách toàn vẹn.
Ví dụ, để sao lưu toàn bộ ổ cứng, bạn có thể làm theo các hướng dẫn sau:
Bước 1: Mở Terminal trên Ubuntu
Bước 2: Sau đó bạn nhập chính xác dòng lệnh sudo sau:
sudo dd if=/dev/sda of=/dev/sdb bs=4096 conv=sync
Bước 3: Tiếp đến bạn nhấn ENTER
Lệnh này sẽ tạo một bản sao lưu toàn bộ ổ cứng của máy và lưu bản sao lưu này vào một file có tên là sdb. Nếu nơi lưu file sdb không đủ dung lượng, bạn sẽ thấy một thông báo lỗi. Bạn có thể kiểm tra bộ nhớ trong Linux để hiểu rõ dung lượng ổ cứng hệ thống chính xác.
Ví dụ 2: Tạo Disk Image trên Linux bằng lệnh dd
Bạn có thể tạo một bản sao lưu dễ dàng toàn bộ ổ đĩa cứng của mình trên Linux bằng lệnh dd. Bản sao lưu này, hay còn gọi là file Disk Image, sẽ có đuôi .img. Ví dụ, để tạo file Disk Image có tên sdadiskimg.img cho toàn bộ ổ cứng, bạn làm như sau:
Bước 1: Trên Ubuntu mở Terminal
Bước 2: Bạn nhập chính xác lệnh:
sudo dd if=/dev/sda of=/tmp/sdadiskimg.img
Bước 3: Sau đó nhập phím ENTER, lệnh này sẽ bắt đầu tạo một bản sao của toàn bộ ổ cứng của máy dưới dạng một file ảnh.
Tùy vào dung lượng ổ cứng, quá trình này có thể mất một chút thời gian. Khi hoàn tất, bạn sẽ có một file ảnh chứa toàn bộ dữ liệu trên ổ cứng và có thể dùng để sao lưu hoặc phục hồi dữ liệu sau này.
Ví dụ 3: Khôi phục Disk Image trên Linux bằng lệnh dd
Lệnh dd trong Linux còn có thể giúp bạn khôi phục lại Disk Image đã lưu trước đó. Để làm điều này, bạn cần sử dụng hai thành phần chính:
if
: Chỉ định đường dẫn đến file Disk Image mà bạn muốn khôi phục.of
: Chỉ định nơi bạn muốn lưu dữ liệu từ Disk Image (ví dụ: một phân vùng hoặc ổ đĩa).
Ví dụ, để khôi phục Disk Image có tên sda1img.img vào một ổ đĩa (hoặc phân vùng) có tên sda1, bạn sẽ làm các bước như sau:
Bước 1: Mở Terminal trên Ubuntu
Bước 2: Bạn nhập lệnh vào cửa sổ Terminal:
sudo dd if=/tmp/sda1img.img of=/dev/sda1
Bước 3: Sau đó bạn nhấn ENTER. Bạn có thể thấy file ảnh đã được khôi phục thành công trong hình ảnh bên dưới.
Ví dụ 4: Nén Disk Image bằng lệnh dd trong Linux
Bạn có thể dễ dàng nén Disk Image trên Linux bằng lệnh dd. Để làm điều này, bạn cần chỉ định phân vùng đĩa muốn nén bằng tùy chọn if
và sau đó chuyển kết quả sang lệnh gzip
để nén. Đảm bảo đặt tên file kết quả có phần mở rộng .img.gz để nhận biết đây là Disk Image đã nén. Nếu có thể giữ nguyên file gốc (Disk Image chưa nén) bằng cách sử dụng tùy chọn -c
khi chạy lệnh gzip
.
Ví dụ: Để nén phân vùng đĩa sda1 và lưu thành file sda1comp.img.gz, bạn thực hiện như sau:
Bước 1: Đầu tiên, mở Terminal trong Ubuntu.
Bước 2: Gõ chính xác lệnh sau:
sudo dd if=/dev/sda1 | gzip -c >/tmp/sda1comp.img.gz
Bước 3: Sau đó, nhấn phím ENTER.
Lệnh này sẽ nén dữ liệu từ phân vùng /dev/sda1
của máy và lưu dưới dạng file nén có tên sda1comp.img.gz trong folder tạm thời /tmp
.
Ví dụ 5: Khôi phục dữ liệu từ bản sao đĩa nén trên Linux
Để khôi phục một Disk Image đã được nén, bạn có thể sử dụng câu lệnh dd. Đầu tiên, hãy xác định file Disk Image nén bằng cách sử dụng với tùy chọn if
. Sau đó, chỉ định file đích nơi bạn muốn lưu Disk Image đã khôi phục bằng tùy chọn of
.
Ví dụ: Để khôi phục file Disk Image nén sda1comp.img.gz và lưu file nén thành file sda2, bạn làm theo các bước như sau:
Bước 1: Mở Terminal trên máy tính
Bước 2: Gõ dòng lệnh sau vào Terminal:
sudo dd if=/tmp/sda1comp.img.gz of=/dev/sda2
Bước 3: Nhấn ENTER, lệnh này sẽ tiến hành giải nén và ghi nội dung của file tin Disk Image đã nén sda1comp.img.gz vào phân vùng đĩa /dev/sda2
.
Ví dụ 6: Tạo hệ thống virtual filesystem bằng lệnh dd
Trong Linux, bạn có thể tạo một hệ thống virtual filesystem bằng lệnh dd. Lệnh này cho phép bạn sao chép dữ liệu từ nơi này sang nơi khác. Để tạo hệ thống virtual filesystem, bạn cần xác định:
- Nguồn dữ liệu: Thường sử dụng
/dev/zero,
một nguồn cung cấp các byte 0 (không có dữ liệu thực). - Kích thước hệ thống file: Bạn điều khiển kích thước bằng cách chỉ định số lượng block (bs) và số lần sao chép (count).
Trong ví dụ này, Vietnix sẽ tạo một hệ thống virtual filesystem tên là file. Sau đó, chúng ta sẽ sao chép 100 khối dữ liệu, mỗi khối có kích thước 512KB (tổng cộng là 51.2 MB).
Bước 1: Mở Terminal trên Ubuntu.
Bước 2: Gõ lệnh sau:
sudo dd if=/dev/zero of=/file bs=512K count=100
Bước 3: Nhấn phím Enter để chạy lệnh, sau khi hoàn tất, bạn sẽ có một file tên file có kích thước 50MB trong folder hiện tại.
Ví dụ 7: Sử dụng lệnh dd để chuyển đổi định dạng file
Bạn có thể dùng lệnh dd để chuyển đổi định dạng chữ hoa chữ thường của một file văn bản. Bằng cách sử dụng tùy chọn conv
cùng với các tham số ucase
(chuyển thành chữ hoa) hoặc lcase
(chuyển thành chữ thường).
- Case A: Chuyển chữ thường thành chữ hoa trong file Linux bằng lệnh dd
Để chuyển đổi toàn bộ nội dung của một file văn bản từ chữ thường sang chữ hoa trong môi trường Linux, bạn có thể thực hiện các bước đơn giản sau:
Bước 1: Mở Terminal trên Ubuntu
Bước 2: Gõ lệnh dd (lệnh dd trong Linux) dưới đây vào cửa sổ Terminal:
dd if=~/file_lower of=~/file_upper conv=ucase
Bước 3: Nhấp ENTER.
Bạn có thể thấy sự chuyển đổi nội dung của file_lower thành chữ in hoa và lưu vào một file mới có tên là file_upper. Ngoài ra, bạn có thể tùy chọn sử dụng lệnh cat để hiển thị nội dung của file như hình.
- Case B: Chuyển đổi chữ hoa thành chữ thường trong file bằng lệnh dd
Để chuyển đổi nội dung của một file văn bản từ chữ hoa sang chữ thường trong Linux, bạn cần sử dụng lệnh dd. Dưới đây là các bước thực hiện đơn giản:
Bước 1: Mở Terminal trong Ubuntu.
Bước 2: Trong cửa sổ Terminal, gõ lệnh sau:
dd if=~/file1.txt of=~/file_lower conv=lcase
Bước 3: Thực thi lệnh bằng cách nhấn phím ENTER.
Kết quả: Lệnh dd tạo một bản sao của file1.txt với tên file_lower và tất cả nội dung sẽ được chuyển thành chữ thường.
Câu hỏi thường gặp
Tại sao lệnh dd lại được gọi là dòng lệnh sao chép dữ liệu nhanh chóng?
Bởi vì Lệnh dd có những đặc điểm lợi ích như truy xuất cấp thấp, không có quá trình kiểm tra lỗi với tốc độ cao hay nhiều tùy chọn điều chỉnh trong quá trình sao chép
Những dòng lệnh nào có thể thay thế cho lệnh dd?
Một số lệnh dòng lệnh có thể thay thế lệnh dd: rsync, tar, cp với giao diện thân thiện hơn, nhiều tính năng hơn và an toàn hơn.
Sự khác biệt giữa lệnh dd và lệnh cp là gì?
Lệnh dd và lệnh cp trong đều được sử dụng để sao chép dữ liệu trong Linux. Điểm khác biệt là lệnh cp được dùng để copy file trong Linux.
Lời kết
Trong bài viết này, Vietnix đã giới thiệu những cách sử dụng của lệnh dd trong Linux. Sau khi thực hành các ví dụ thực tế này, bạn sẽ có thể sao chép, tạo và chuyển đổi các file theo nhu cầu của mình. Hy vọng rằng, việc tìm hiểu kỹ lệnh dd sẽ giúp bạn làm quen với dòng lệnh và trở thành một người dùng Linux thành thạo.