Khi liệt kê nội dung của một thư mục bằng lệnh ls
, bạn có thể nhận thấy rằng kích thước của các thư mục hầu như luôn luôn là 4096 byte (4 KB). Đó là kích thước của không gian trên đĩa được sử dụng để lưu trữ siêu thông tin cho thư mục, không phải những gì nó chứa.
Lệnh bạn sẽ muốn sử dụng để có được kích thước thực của một thư mục du
, viết tắt của “disk using”.
Xem kích thước của một thư mục
Lệnh du
hiển thị dung lượng tập tin được sử dụng bởi các tập tin hoặc thư mục cụ thể. Nếu đường dẫn được chỉ định là một thư mục, lệnh du
tóm tắt việc sử dụng đĩa của từng thư mục con trong thư mục đó. Nếu không có đường dẫn nào được chỉ định, lệnh du
báo cáo việc sử dụng đĩa của thư mục làm việc hiện tại .
Khi được gọi mà không có bất kỳ tùy chọn nào, du
sẽ hiển thị việc sử dụng đĩa của thư mục đã cho và từng thư mục con của nó theo byte.
Thông thường, bạn muốn hiển thị không gian bị chiếm bởi thư mục ở định dạng con người có thể đọc được. Ví dụ, để lấy tổng kích thước của thư mục /var
, bạn sẽ chạy lệnh sau:
sudo du -sh /var
Đầu ra sẽ giống như sau:
85G /var
Hãy giải thích lệnh và các đối số của nó:
- Lệnh bắt đầu bằng
sudo
vì hầu hết các tệp và thư mục bên trong thư mục/var
thuộc sở hữu của người dùng root và người dùng thông thường không thể đọc được. Nếu bạn bỏ quasudo
các lệnhdu
sẽ in “du: cannot read directory”. s
– Chỉ hiển thị tổng kích thước của thư mục được chỉ định, không hiển thị tổng kích thước tệp cho các thư mục con.h
– Kích thước in ở định dạng con người có thể đọc được (h
)./var
– Đường dẫn đến thư mục muốn lấy kích thước.
Điều gì sẽ xảy ra nếu bạn muốn hiển thị việc sử dụng đĩa của các thư mục con cấp một? Bạn có hai lựa chọn. Cách đầu tiên là sử dụng biểu tượng dấu hoa thị ( *
) như hình dưới đây, có nghĩa là “khớp mọi thứ không bắt đầu bằng dấu chấm ( .
)”. Các tùy chọn -c
cho du
in một tổng lớn thuộc mọi quy mô:
sudo du -shc /var/*
24K /var/db 4.0K /var/empty 4.0K /var/games 77G /var/lib 4.0K /var/local 0 /var/lock 3.3G /var/log 0 /var/mail 4.0K /var/opt 0 /var/run 196K /var/spool 28K /var/tmp 85G total
Một cách khác để nhận báo cáo về việc sử dụng đĩa của các thư mục con cấp một là sử dụng tùy chọn --max-depth
:
sudo du -h --max-depth=1 /var
77G /var/lib 24K /var/db 4.0K /var/empty 4.0K /var/local 4.0K /var/opt 196K /var/spool 4.0K /var/games 3.3G /var/log 5.0G /var/cache 28K /var/tmp 85G /var 85G total
Theo mặc định, du
hiển thị không gian đĩa được sử dụng bởi thư mục hoặc tệp. Để tìm kích thước rõ ràng của một thư mục, hãy sử dụng --apparent-size
tùy chọn. “apparent size” của tệp là lượng dữ liệu thực sự có trong tệp.
sudo du -sh --apparent-size /var
Khi bạn chuyển một thư mục qua SCP , Rsync . Hoặc SFTP , lượng dữ liệu được truyền qua mạng là kích thước rõ ràng của tệp. Đây là lý do tại sao kích thước của không gian trên đĩa được sử dụng trên nguồn khi hiển thị với du
(không có --apparent-size
) không giống với kích thước trên đích.
Lệnh du
cũng có thể được kết hợp với các lệnh khác với pipeline.
Ví dụ, để in 5 thư mục lớn nhất trong thư mục /var
, bạn sẽ pipeline đầu ra của du
để các sort
để sắp xếp các thư mục bằng kích thước của chúng và pipeline sau đó đầu ra cho head
lệnh đó sẽ in chỉ các thư mục top 5:
sudo du -h /var/ | sort -rh | head -5
85G /var/ 77G /var/lib 75G /var/lib/libvirt/images 75G /var/lib/libvirt 5.0G /var/cache/pacman/pkg
Phần kết luận
Trong Linux, bạn có thể lấy kích thước của một thư mục bằng lệnh du
.
Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, hãy để lại bình luận bên dưới.