NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
23/08/2024
Lượt xem

Tìm hiểu cách sử dụng lệnh dd trong Linux qua 7 ví dụ thực tế

23/08/2024
15 phút đọc
Lượt xem

Đánh giá

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.

Lệnh dd trong Linux
Lệnh dd trong Linux

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

Trong đó:

    • [OPERAND]: Cho biết nguồn và đích của dữ liệu (ví dụ: file, phân vùng đĩa). Bạn có thể sử dụng nhiều phần tử cùng lúc.

    • OPTION: Thay đổi cách thức hoạt động của lệnh dd (ví dụ: thay đổi kích thước khối dữ liệu).

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ạngMô tả
bs=BYTESĐọc hoặc ghi dữ liệu với kích thước khối là BYTES
cbs=BYTESChuyển đổi dữ liệu với kích thước khối là BYTES
conv=CONVSChuyể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
countChỉ đị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=FILEGhi dữ liệu vào FILE
if=FILEĐọc dữ liệu từ FILE
seek=NBỏ qua N khối ở đầu file đích
skip=N Bỏ qua N khối ở đầu file nguồn
Một số tham số thường dùng

Lưu ý: Các tham số trong giao diện dòng lệnh Linux đều phân biệt chữ hoa chữ thường, nên hãy cẩn thận khi sử dụng. Các giá trị N và BYTES có thể được kết hợp với các hậu tố sau để biểu thị kích thước:

    • c: 1 byte

    • w: 2 byte

    • b: 512 byte

    • kB: 1000 byte

    • K: 1024 byte (kilobyte)

    • MB: 1000 * 1000 byte

    • M: 1024 * 1024 byte (megabyte)

    • xM: Tương đương với M

    • GB: 1000 * 1000 * 1000 byte

    • G: 1024 * 1024 * 1024 byte (gigabyte)

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ọnMô tả
-helpHiển thị trang trợ giúp, cung cấp thông tin chi tiết về cách sử dụng lệnh
-versionHiển thị thông tin phiên bản của lệnh dd

Lưu ý: Các tùy chọn trong giao diện dòng lệnh (CLI) của Linux phân biệt chữ hoa chữ thường, vì vậy hãy cẩn thận khi sử dụng.

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

Sao lưu toàn bộ ổ cứng hoặc phân vùng ổ đĩa bằng lệnh dd trên Linux
Sao lưu toàn bộ ổ cứng hoặc phân vùng ổ đĩa bằng lệnh dd trên Linux

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ạo Disk Image trên Linux bằng lệnh dd
Tạo Disk Image trên Linux bằng lệnh dd

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.

Khôi phục Disk Image trên Linux bằng lệnh dd
Khôi phục Disk Image trên Linux bằng lệnh dd

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.

Nén Disk Image bằng lệnh dd trong Linux
Nén Disk Image bằng lệnh dd trong Linux

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.

Khôi phục dữ liệu từ bản sao đĩa nén trên Linux bằng lệnh dd
Khôi phục dữ liệu từ bản sao đĩa nén trên Linux bằng lệnh dd

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ụ 6: Tạo hệ thống virtual filesystem bằng lệnh dd trên Linux
Ví dụ 6: Tạo hệ thống virtual filesystem bằng lệnh dd trên Linux

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.

Chuyển đổi định dạng file bằng lệnh dd trên Linux
Chuyển đổi định dạng file bằng lệnh dd trên Linux
  • 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.

Lệnh dd sẽ 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
Lệnh dd sẽ 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

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.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG