Nội dung bài viết
- ncdu là gì?
- Khi nào nên sử dụng ncdu?
- Cách cài đặt ncdu
- Ubuntu và Debian
- Fedora, Rocky Linux và AlmaLinux
- Arch Linux
- Alpine Linux
- macOS
- Cách sử dụng ncdu cơ bản
- Các phím điều khiển quan trọng
- Quét toàn bộ hệ thống an toàn
- Loại trừ thư mục không cần quét
- Tăng tốc và lưu kết quả quét
- Quét song song trên ncdu 2.x
- Xuất kết quả để xem lại
- Phân tích máy chủ từ xa qua SSH
- ncdu khác gì với du?
- Các lệnh ncdu hữu ích
- Câu hỏi thường gặp về ncdu
- Kết luận
Ổ đĩa máy chủ sắp đầy nhưng bạn chưa biết thư mục nào đang chiếm chỗ? ncdu giúp quét, sắp xếp và duyệt dung lượng ngay trong Terminal bằng giao diện trực quan, đặc biệt hữu ích khi quản trị Linux hoặc VPS qua SSH.
Tóm tắt nhanh
- ncdu là công cụ phân tích dung lượng ổ đĩa có giao diện tương tác trong Terminal.
- Lệnh cơ bản nhất là
ncdu /duong-dan; khi quét toàn hệ thống nên dùngsudo ncdu -r -x /. - Tùy chọn
-xgiữ quá trình quét trong một filesystem, còn-rvô hiệu hóa chức năng xóa. - ncdu có thể loại trừ thư mục, xuất kết quả để xem lại và phân tích máy chủ từ xa qua SSH.
ncdu là gì?
ncdu là viết tắt của NCurses Disk Usage. Đây là công cụ phân tích dung lượng ổ đĩa hoạt động trong Terminal, tương tự lệnh du nhưng có giao diện tương tác.
Sau khi quét, ncdu hiển thị file và thư mục theo dung lượng. Người dùng có thể đi sâu vào từng thư mục, thay đổi cách sắp xếp, xem thông tin chi tiết và xác định nhanh dữ liệu đang chiếm nhiều không gian lưu trữ.
Theo trang chính thức của ncdu, công cụ được thiết kế để tìm các thành phần chiếm dung lượng trên máy chủ từ xa, nơi thường không có giao diện đồ họa. ncdu cũng hoạt động tốt trên máy tính cá nhân chạy hệ điều hành tương thích POSIX.
Khi nào nên sử dụng ncdu?
- Máy chủ hoặc VPS báo gần hết dung lượng ổ đĩa.
- Website không thể ghi log, tạo cache hoặc tải file mới.
- Docker, bản sao lưu hoặc file media tăng dung lượng bất thường.
- Cần kiểm tra nhanh các thư mục như
/var,/home,/opthoặc/var/www. - Muốn dọn dẹp máy chủ từ xa thông qua SSH.
Trước khi quét chi tiết, hãy dùng lệnh sau để xem phân vùng nào đang đầy:
df -h
Nếu bạn chưa quen với khái niệm máy chủ ảo, có thể tham khảo thêm bài VPS là gì? Những điều cần biết về VPS.
Cách cài đặt ncdu
Ubuntu và Debian
sudo apt update
sudo apt install ncdu
Fedora, Rocky Linux và AlmaLinux
sudo dnf install ncdu
Với các hệ thống CentOS cũ:
sudo yum install ncdu
Arch Linux
sudo pacman -S ncdu
Alpine Linux
sudo apk add ncdu
macOS
Nếu máy đã cài Homebrew:
brew install ncdu
Kiểm tra phiên bản sau khi cài:
ncdu --version
Thông tin
Phiên bản ncdu trong kho phần mềm của mỗi hệ điều hành có thể khác nhau. Hãy dùng ncdu --help hoặc man ncdu để xem chính xác các tùy chọn được hỗ trợ trên máy của bạn.
Cách sử dụng ncdu cơ bản
Quét thư mục hiện tại:
ncdu
Quét một thư mục cụ thể:
ncdu /var
Kiểm tra thư mục chứa dữ liệu website:
ncdu /var/www
Thời gian quét phụ thuộc vào số lượng file, tốc độ ổ đĩa và loại filesystem. Một thư mục có hàng triệu file nhỏ thường mất nhiều thời gian hơn thư mục chỉ chứa vài file lớn.
Các phím điều khiển quan trọng
| Phím | Chức năng |
|---|---|
↑, ↓ hoặc j, k | Di chuyển giữa các mục |
Enter, → hoặc l | Mở thư mục đang chọn |
← hoặc h | Quay lại thư mục cha |
s | Sắp xếp theo dung lượng |
n | Sắp xếp theo tên |
i | Xem thông tin mục đang chọn |
g | Thay đổi cách hiển thị tỷ lệ và biểu đồ |
a | Chuyển giữa dung lượng thực tế và kích thước biểu kiến |
r | Quét lại thư mục hiện tại |
d | Xóa file hoặc thư mục đang chọn |
? | Mở trợ giúp |
q | Thoát ncdu |
Quét toàn bộ hệ thống an toàn
Để kiểm tra phân vùng gốc nhưng không đi sang filesystem khác được gắn bên trong, sử dụng tùy chọn -x:
ncdu -x /
Khi cần quyền quản trị để đọc toàn bộ hệ thống, nên bật chế độ chỉ đọc:
sudo ncdu -r -x /
-x: chỉ quét dữ liệu nằm trên cùng filesystem với đường dẫn bắt đầu.-r: vô hiệu hóa tính năng xóa trong giao diện ncdu.
Dùng -r hai lần để vô hiệu hóa cả chức năng xóa và mở shell:
sudo ncdu -rr -x /
Cảnh báo
Không nên chạy ncdu bằng quyền root rồi xóa trực tiếp khi chưa kiểm tra kỹ. Các thư mục hệ thống, dữ liệu cơ sở dữ liệu, Docker volume và file đang được tiến trình sử dụng có thể gây sự cố nếu bị xóa nhầm.
Loại trừ thư mục không cần quét
Bỏ qua một thư mục bằng tùy chọn --exclude:
ncdu --exclude node_modules .
Loại trừ nhiều mẫu:
ncdu --exclude node_modules --exclude .git --exclude vendor .
Bạn cũng có thể lưu các mẫu vào file exclude.txt:
node_modules
.git
vendor
storage/logs
Sau đó chạy:
ncdu -X exclude.txt .
Mục bị loại trừ vẫn có thể xuất hiện trong giao diện, nhưng nội dung không được quét và không được tính vào thống kê dung lượng.
Tăng tốc và lưu kết quả quét
Quét song song trên ncdu 2.x
Các phiên bản ncdu 2.x hiện đại hỗ trợ quét song song. Ví dụ, sử dụng tám luồng:
ncdu -t8 /var
Hiệu quả thực tế phụ thuộc vào ổ đĩa, filesystem và thiết bị lưu trữ mạng. Nếu ncdu báo không nhận tùy chọn -t, hãy chạy lại mà không có tùy chọn này.
Xuất kết quả để xem lại
Với một cây thư mục lớn, bạn có thể quét một lần rồi lưu kết quả JSON:
ncdu -o scan.json /var
Mở lại kết quả:
ncdu -f scan.json
Khi đọc dữ liệu từ file, ncdu mặc định vô hiệu hóa các chức năng xóa, làm mới và mở shell. Đây là cơ chế bảo vệ vì dữ liệu đã lưu không nhất thiết còn phản ánh chính xác filesystem hiện tại.
ncdu 2.6 trở lên còn hỗ trợ định dạng nhị phân nén bằng tùy chọn -O:
ncdu -1xO scan.ncdu /
ncdu -f scan.ncdu
Phân tích máy chủ từ xa qua SSH
Nếu ncdu được cài trên cả máy chủ và máy cục bộ, bạn có thể quét từ xa rồi duyệt kết quả trên máy của mình:
ssh user@server 'ncdu -co- /var' | ncdu -f-
Cách này hữu ích khi kết nối SSH có độ trễ cao: quá trình quét diễn ra trên máy chủ, còn giao diện duyệt chạy cục bộ.
Một phương án dễ kiểm soát hơn là lưu kết quả thành file:
ssh user@server 'ncdu -o- /var' > server-scan.json
ncdu -f server-scan.json
ncdu khác gì với du?
| Tiêu chí | du | ncdu |
|---|---|---|
| Có sẵn trên hầu hết hệ thống Unix | Có | Thường phải cài thêm |
| Giao diện tương tác | Không | Có |
| Duyệt vào từng thư mục | Phải chạy lại lệnh | Thao tác trực tiếp |
| Phù hợp với script | Rất phù hợp | Có thể xuất dữ liệu |
| Xóa file từ giao diện | Không | Có |
| Điều tra sự cố thủ công | Trung bình | Thuận tiện |
du phù hợp với script và tự động hóa, còn ncdu thuận tiện hơn khi cần khám phá dữ liệu theo cách tương tác. Hai công cụ bổ trợ cho nhau thay vì thay thế hoàn toàn.
Các lệnh ncdu hữu ích
# Quét thư mục hiện tại
ncdu
# Quét thư mục /var
ncdu /var
# Quét phân vùng gốc, không đi sang filesystem khác
ncdu -x /
# Quét toàn hệ thống ở chế độ chỉ đọc
sudo ncdu -r -x /
# Không quét node_modules và .git
ncdu --exclude node_modules --exclude .git .
# Hiển thị thêm quyền, chủ sở hữu và thời gian sửa đổi
ncdu -e /var
# Quét bằng 8 luồng trên ncdu 2.x
ncdu -t8 /var
# Xuất và mở lại kết quả
ncdu -o scan.json /var
ncdu -f scan.json
Câu hỏi thường gặp về ncdu
ncdu có dùng được trên Windows không?
ncdu chủ yếu dành cho hệ thống tương thích POSIX. Trên Windows, cách thuận tiện nhất thường là sử dụng ncdu bên trong WSL hoặc môi trường Unix tương thích.
Vì sao tổng dung lượng trong ncdu khác với kích thước file?
Mặc định ncdu hiển thị dung lượng thực tế trên đĩa. File thưa, block filesystem, hard link và metadata có thể làm dung lượng thực tế khác kích thước biểu kiến. Nhấn a để chuyển giữa hai cách hiển thị.
Xóa file trong ncdu có vào thùng rác không?
Chức năng xóa tích hợp thường xóa trực tiếp sau khi xác nhận. Nếu chưa chắc chắn, hãy chạy ncdu với -r, ghi lại đường dẫn rồi xử lý bằng quy trình sao lưu hoặc công cụ quản trị phù hợp.
Kết luận
ncdu là công cụ nhỏ gọn nhưng rất hiệu quả khi cần tìm nguyên nhân khiến ổ đĩa đầy. Giao diện Terminal trực quan giúp quản trị viên nhanh chóng xác định thư mục lớn, lần theo dữ liệu bất thường và đưa ra quyết định dọn dẹp chính xác hơn.
Trong môi trường máy chủ, lệnh khởi đầu an toàn được khuyến nghị là:
sudo ncdu -r -x /
Lệnh này kiểm tra phân vùng gốc, không đi sang filesystem khác và không cho phép xóa trực tiếp trong giao diện. Sau khi xác định được nguyên nhân, hãy kiểm tra bản sao lưu và tình trạng ứng dụng trước khi xóa hoặc di chuyển dữ liệu.
Tài liệu tham khảo
Xem thêm hướng dẫn sử dụng ncdu chính thức để tra cứu đầy đủ tùy chọn, phím điều khiển và định dạng xuất dữ liệu.