Tìm hiểu và xác định MIME Type cho các file trong Linux

MIME Type (Multi-purpose Internet Mail Extensions) là cách chuẩn hóa để phân loại các loại tệp trên internet.

Bài viết giải thích về các thành phần của MIME Type và cách xác định tệp trong Linux thuộc loại MIME Type nào bằng các công cụ dòng lệnh.

1. MIME Type

  • Một MIME Type có hai thành phần là typesubtype
    Ví dụ: text/html thì (type: text, subtype: html).
  • Có 10 loại Type chính: text, application, audio, example, font, image, message, model, multipart, và video.
  • MIME Type cũng có thể chứa các thành phần như tiền tố (prefix) hoặc hậu tố (suffix) như type "/" [tree "."] subtype ["+" suffix]
    ví dụ: application/vnd.api+json.

Nhờ có MIME Type mà khi trình duyệt và máy chủ trao đổi dữ liệu với nhau, trình duyệt sẽ có hành vi xử lý file đúng cách.

Chẵng hạn, khi server thông báo cho trình duyệt biết đó là một file có MIME Type là image/png thì thay vì download/save file lại như các định dạng khác, trình duyệt sẽ hiện file ảnh đó ngay trên trình duyệt. Nếu server thông báo đó là một file có dạng application/zip thì trình duyệt sẽ download file đó xuống ổ cứng ngay lập tức.

2. Xác định MIME Type của tệp

Có hai cách để xác định MIME Type:

  • Dựa trên phần mở rộng của tệp: Nhanh nhưng dễ sai nếu phần mở rộng bị thay đổi.
  • Dựa trên nội dung của tệp: Chính xác hơn, nhưng chậm hơn do phải đọc dữ liệu tệp.

3. Công cụ dòng lệnh trong Linux để xác định MIME Type của file

Lệnh xdg-mime

Để dùng được lệnh xdg-mime này trước tiên bạn cần cài đặt gói xdg-utils

Dùng cho Ubuntu:

sudo apt install xdg-utils

Cho almalinux/rocky/centos:

sudo dnf install xdg-utils

Lệnh sẽ kiểm tra dựa trên phần mở rộng của file

Ví dụ bạn có một file ảnh là anh-nen-cute.jpg trong thư mục /home/tmp

Bạn cần di chuyển vào thư mục chứa file ảnh bằng lệnh cd

cd /home/tmp

Sau đó mới dùng lệnh xdg-mime

xdg-mime query filetype anh-nen-cute.jpg

Kết quả: image/jpeg

Do đó nếu đổi phần mở rộng của file từ .jpg sang .zip, lệnh có thể trả về kết quả không chính xác và nhận nhầm đó là file .zip như dưới

xdg-mime query filetype anh-nen-cute.zip

Kết quả: application/zip

Trong trường hợp file không có phần mở rộng thì lệnh xdg-mime mới đọc nội dung file để xác định.

xdg-mime query filetype anh-nen-cute

Kết quả: image/jpeg

Lệnh file có sẵn trên linux

Không phụ thuộc vào phần mở rộng, chỉ đọc nội dung tệp.

Chính xác hơn lệnh xdg-mime trong trường hợp phần mở rộng bị thay đổi.

Ví dụ:

file --mime-type onePicture.zip

Kết quả: image/jpeg

Kết luận

  • MIME Type giúp phân loại và nhận diện tệp trên internet.
  • Hai công cụ phổ biến để xác định MIME type trong Linux là xdg-mimefile.
  • xdg-mime có thể bị nhầm lẫn nếu chỉ dựa vào phần mở rộng, trong khi file đáng tin cậy hơn nhờ kiểm tra nội dung tệp.