When listing the contents of a directory using the ls
command, you may have noticed that the size of the directories is almost always 4096 bytes (4 KB). That’s the size of space on the disk that is used to store the meta-information for the directory, not what it contains.
The command you’ll want to use to get the actual size of a directory is du
, which is short for “disk usage”.
Getting the Size of a Directory
The du
command displays the amount of file space used by the specified files or directories. If the specified path is a directory, du
summarizes disk usage of each subdirectory in that directory. If no path is specified, du
reports the disk usage of the current working directory .
du
displays the disk usage of the given directory and each of its subdirectories in bytes.Typically, you would want to display the space occupied by the directory in a human-readable format. For example, to get the total size of the /var
directory, you would run the following command:
sudo du -sh /var
The output will look something like this:
85G /var
Let’s explain the command and its arguments:
- The command starts with
sudo
because most of the files and directories inside the/var
directory are owned by the root user and are not readable by the regular users. If you omitsudo
thedu
command will print “du: cannot read directory”. s
- Display only the total size of the specified directory, do not display file size totals for subdirectories.h
- Print sizes in a human-readable format (h
)./var
- The path to the directory you want to get the size.
What if you want to display the disk usage of the first-level subdirectories? You have two options. The first one is to use the asterisk symbol (*
) as shown below, which means “match everything that doesn’t start with a period (.
)”. The -c
option tells du
to print a grand total of all sizes:
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
Another way to get a report about the disk usage of the first-level subdirectories is to use the --max-depth
option:
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
By default, the du
command shows the disk space used by the directory or file. To find the apparent size of a directory, use the --apparent-size
option. The “apparent size” of a file is how much data is actually in the file.
sudo du -sh --apparent-size /var
When you transfer a directory via SCP , Rsync ., or SFTP the amount of data that is transferred over the network is the apparent size of the files. This is why the size of space on the disk used on the source when displayed with du
(without --apparent-size
) is not the same as the size on the target.
The du
command can also be combined with other commands with pipes.
For example, to print the 5 largest directories within the /var
directory, you would pipe the output of du
to the sort
command to sort the directories by their size and then pipe the output to the head
command that will print only the top 5 directories:
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
df command in Linux with Examples
The df command (short for disk free), is used to display information related to file systems about total space and available space.
Syntax :
df [OPTION]... [FILE]...
If no file name is given, it displays the space available on all currently mounted file systems.
For example :
df
Output :
Filesystem 1K-blocks Used Available Use% Mounted on udev 3996816 0 3996816 0% /dev tmpfs 804624 10020 794604 2% /run /dev/sda9 68117056 18036160 46597712 28% / tmpfs 4023116 29848 3993268 1% /dev/shm tmpfs 5120 4 5116 1% /run/lock tmpfs 4023116 0 4023116 0% /sys/fs/cgroup /dev/loop0 88832 88832 0 100% /snap/simplescreenrecorder/1 /dev/loop2 85888 85888 0 100% /snap/core/3748 /dev/loop3 85888 85888 0 100% /snap/core/3604 /dev/loop1 83328 83328 0 100% /snap/core/3887 /dev/sda10 78873504 67530504 7313356 91% /home /dev/sda1 507904 30908 476996 7% /boot/efi tmpfs 804624 12 804612 1% /run/user/121 tmpfs 804624 64 804560 1% /run/user/1000
Now, if you specify particular file, then it will show mount information of that particular file.
For example:
df /home/username/test/test.cpp
Output :
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda10 78873504 67528220 7315640 91% /home
Options for df command :
-a, –all : includes pseudo, duplicate and inaccessible file systems.
-B, –block-size=SIZE : scales sizes by SIZE before printing them.
-h, –human-readable : print sizes in power of 1024
-H, –si: print sizes in power of 1000
-i, –inodes : list inode information instead of block usage
-l, –local : limit listing to local file systems
-P, –portability : use POSIX output format
–sync : invoke sync before getting usage info
–total : elide all entries insignificant to available space, and produce grand total
-t, –type=TYPE : limit listing to file systems of type TYPE
-T, –print-type : print file system type
df usage Examples with options :
- If you want to display all the file system, use -a option.
df -a
Output :
/dev/sda10 78873504 67528540 7315320 91% /home /dev/sda1 507904 30908 476996 7% /boot/efi tmpfs 804624 12 804612 1% /run/user/121 tmpfs 804624 64 804560 1% /run/user/1000 gvfsd-fuse 0 0 0 - /run/user/1000/gvfs
The above is not complete output, but you can see that the information shown is extended to info provided by df command.
- Use -h option to display size in power of 1024
df -h /home/username
Output :
Filesystem Size Used Avail Use% Mounted on /dev/sda10 76G 65G 7.0G 91% /home
- Use -H option to display sizes in power of 1000
df -H /home/username
Output :
Filesystem Size Used Avail Use% Mounted on /dev/sda10 81G 70G 7.5G 91% /home
You can observe the size section of two command with -h and -H option for difference.
- To get complete grand total, use –total option
df --total
Output :
Filesystem 1K-blocks Used Available Use% Mounted on udev 3996816 0 3996816 0% /dev tmpfs 804624 10072 794552 2% /run /dev/sda9 68117056 18036336 46597536 28% / tmpfs 4023116 50140 3972976 2% /dev/shm tmpfs 5120 4 5116 1% /run/lock tmpfs 4023116 0 4023116 0% /sys/fs/cgroup /dev/loop0 88832 88832 0 100% /snap/simplescreenrecorder/1 /dev/loop2 85888 85888 0 100% /snap/core/3748 /dev/loop3 85888 85888 0 100% /snap/core/3604 /dev/loop1 83328 83328 0 100% /snap/core/3887 /dev/sda10 78873504 67529320 7314540 91% /home /dev/sda1 507904 30908 476996 7% /boot/efi tmpfs 804624 12 804612 1% /run/user/121 tmpfs 804624 64 804560 1% /run/user/1000 total 162304440 86000792 68790820 56% -
Observe the last row of above table output, it specifies grand total.
- Use -T option to display file type
For example:df -T /home/username
Output :
Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda10 ext4 78873504 67528128 7315732 91% /home
You can see the file type for /home/username is ext4.
- And for more help, you can use –help option.
df --help
0 comments:
Post a Comment