Trong Linux, có những công cụ mà chúng ta nghĩ đã quá quen thuộc. Nhưng bạn đã biết công cụ quản lý cơ sở dữ liệu nhỏ gọn nhất thế giới, SQLite, lại có một chức năng ít ai ngờ tới: khả năng giao tiếp trực tiếp với các file nén ZIP.
Thú thật là khi tìm hiểu sâu và thấy nó ứng dụng được cũng cũng khá wow và chỉ vì một thói quen đơn giản đọc tài liệu.
Hướng dẫn truy vấn file ZIP bằng SQLite
Hãy tưởng tượng chúng ta có một file nén tên là my.zip
. Bên trong nó là những file thông thường. Làm thế nào để nhìn thấu và thao tác nó mà không cần giải nén?

Bước 1: Chuẩn bị file ZIP
Đầu tiên, chúng ta tạo một file text có nội dung là chữ “hello” được tạo bằng lệnh figlet
và nén nó cùng với một thư mục tên là group
vào file my.zip
.
$ cp /etc/group .
$ figlet hello > hello.txt
$ zip -r my.zip *
Kết quả đầu ra:
adding: group (deflated 56%)
adding: hello.txt (deflated 51%)
Bước 2: Mở file ZIP bằng SQLite
Chúng ta dùng lệnh sqlite3
để mở file ZIP.
$ sqlite3 my.zip
Kết quả đầu ra:
SQLite version 3.43.2 2023-10-10 13:08:14
Enter ".help" for usage hints.
sqlite>
Bước 3: Tạo một Virtual Table
Với một câu lệnh CREATE VIRTUAL TABLE
đơn giản, chúng ta đang dạy cho SQLite cách nhìn nhận file my.zip
như một bảng dữ liệu.
CREATE VIRTUAL TABLE zip USING zipfile('my.zip');
Bước 4: Truy vấn nội dung file ZIP như một bảng Database
Với câu lệnh SELECT
, chúng ta có thể xem danh sách các file trong kho lưu trữ.
SELECT name FROM zip;
Kết quả đầu ra:
group
hello.txt
Sau đó, chúng ta có thể đọc nội dung của một file cụ thể:
SELECT data FROM zip WHERE name = 'hello.txt';
Kết quả đầu ra:
_ _ _
| |__ ___| | | ___
| '_ \ / _ \ | |/ _ \
| | | | __/ | | (_) |
|_| |_|\___|_|_|\___/
Toàn bộ nội dung ASCII art của file text đã được hiển thị ngay trên terminal.
Bước 5: Chỉnh sửa file ZIP bằng lệnh SQL
Chúng ta có thể thay đổi cấu trúc của file ZIP bằng SQL. Hãy thử xóa thư mục group
ra khỏi kho lưu trữ.
DELETE FROM zip WHERE name = 'group';
Bước 6: Kiểm tra kết quả
Sau khi thoát khỏi SQLite bằng lệnh .quit
, một lệnh unzip -l
đơn giản sẽ cho thấy kết quả.
$ unzip -l my.zip
Kết quả đầu ra:
Archive: my.zip
Length Date Time Name
--------- ---------- ----- ----
138 08-08-2025 08:58 hello.txt
--------- -------
138 1 file
Bạn có thể thấy rõ, thư mục group
đã hoàn toàn biến mất và chỉ còn lại một file duy nhất.
Bí mật nằm ở đâu?
Điều này chứng tỏ điều gì? Nó cho thấy ranh giới giữa các loại công cụ đôi khi rất mong manh. Một trình quản lý database có thể trở thành một tiện ích xử lý file mạnh mẽ. Nó cũng là một lời nhắc nhở rằng, thế giới phần mềm luôn đầy rẫy những easter eggs và những tính năng ẩn, đang chờ đợi những người tò mò và kiên nhẫn đọc tài liệu khám phá ra.