NAME

ncdu - NCurses Disk Usage

SYNOPSIS

ncdu [options] dir

DESCRIPTION

ncdu (NCurses Disk Usage) is a curses-based version of the well-known 'du', and provides a fast way to see what directories are using your disk space.

OPTIONS

Mode Selection

Interface options

Scan Options

These options affect the scanning progress, and have no effect when importing directory information from a file.

KEYS

  1. Order by filename (press again for descending order)

  2. Order by filesize (press again for descending order)

  1. Order by number of items (press again for descending order)

  1. Toggle between showing disk usage and showing apparent size.

  1. Order by latest child mtime, or modified time. (press again for descending order) Requires the -e flag.

  1. Delete the selected file or directory. An error message will be shown when the contents of the directory do not match or do not exist anymore on the filesystem.

  2. Toggle dirs before files when sorting.

  3. Toggle between showing percentage, graph, both, or none. Percentage is relative to the size of the current directory, graph is relative to the largest item in the current directory.

  4. Toggle display of child item counts.

  5. Toggle display of latest child mtime, or modified time. Requires the -e flag.

  6. Show/hide 'hidden' or 'excluded' files and directories. Please note that even though you can't see the hidden files and directories, they are still there and they are still included in the directory sizes. If you suspect that the totals shown at the bottom of the screen are not correct, make sure you haven't enabled this option.

  1. Show information about the current selected item.

  1. Refresh/recalculate the current directory.

  2. Spawn shell in current directory. Ncdu will determine your preferred shell from the NCDU_SHELL or SHELL variable (in that order), or will call /bin/sh if neither are set. This allows you to also configure another command to be run when he 'b' key is pressed. For example, to spawn the vifm (1) file manager instead of a shell, run ncdu as follows: export NCDU_SHELL=vifm ncdu

  3. Quit

FILE FLAGS

Entries in the browser interface may be prefixed by a one-character flag. These flags have the following meaning:

  1. This is neither a file nor a folder (symlink, socket, ...).

  1. Same file was already counted (hard link).

  1. Empty directory.

EXAMPLES

To scan and browse the directory you're currently in, all you need is a simple:

ncdu

If you want to scan a full filesystem, your root filesystem, for example, then you'll want to use -x:

ncdu -x /

Since scanning a large directory may take a while, you can scan a directory and export the results for later viewing:

ncdu -1xo- / | gzip >export.gz # ...some time later: zcat export.gz | ncdu -f-

To export from a cron job, make sure to replace -1 with -0 to suppress any unnecessary output.

You can also export a directory and browse it once scanning is done:

ncdu -o- | tee export.file | ./ncdu -f-

The same is possible with gzip compression, but is a bit kludgey:

ncdu -o- | gzip | tee export.gz | gunzip | ./ncdu -f-

To scan a system remotely, but browse through the files locally:

ssh -C user@system ncdu -o- / | ./ncdu -f-

The -C option to ssh enables compression, which will be very useful over slow links. Remote scanning and local viewing has two major advantages when compared to running ncdu directly on the remote system: You can browse through the scanned directory on the local system without any network latency, and ncdu does not keep the entire directory structure in memory when exporting, so you won't consume much memory on the remote system.

HARD LINKS

Every disk usage analysis utility has its own way of (not) counting hard links. There does not seem to be any universally agreed method of handling hard links, and it is even inconsistent among different versions of ncdu. This section explains what each version of ncdu does.

ncdu 1.5 and below does not support any hard link detection at all: each link is considered a separate inode and its size is counted for every link. This means that the displayed directory sizes are incorrect when analyzing directories which contain hard links.

ncdu 1.6 has basic hard link detection: When a link to a previously encountered inode is detected, the link is considered to have a file size of zero bytes. Its size is not counted again, and the link is indicated in the browser interface with a 'H' mark. The displayed directory sizes are only correct when all links to an inode reside within that directory. When this is not the case, the sizes may or may not be correct, depending on which links were considered as duplicate and which as original. The indicated size of the topmost directory (that is, the one specified on the command line upon starting ncdu) is always correct.

ncdu 1.7 and later has improved hard link detection. Each file that has more than two links has the H mark visible in the browser interface. Each hard link is counted exactly once for every directory it appears in. The indicated size of each directory is therefore, correctly, the sum of the sizes of all unique inodes that can be found in that directory. Note, however, that this may not always be same as the space that will be reclaimed after deleting the directory, as some inodes may still be accessible from hard links outside it.

BUGS

Directory hard links are not supported. They will not be detected as being hard links, and will thus be scanned and counted multiple times.

Some minor glitches may appear when displaying filenames that contain multibyte or multicolumn characters.

All sizes are internally represented as a signed 64bit integer. If you have a directory larger than 8 EiB minus one byte, ncdu will clip its size to 8 EiB minus one byte. When deleting items in a directory with a clipped size, the resulting sizes will be incorrect.

Item counts are stored in a signed 32-bit integer without overflow detection. If you have a directory with more than 2 billion files, quite literally anything can happen.

On macOS 10.15 and later, running ncdu on the root directory without `--exclude-firmlinks` may cause directories to be scanned and counted multiple times. Firmlink cycles are currently (1.15.1) not detected, so it may also cause ncdu to get stuck in an infinite loop and eventually run out of memory.

Please report any other bugs you may find at the bug tracker, which can be found on the web site at https://dev.yorhel.nl/ncdu

AUTHOR

Written by Yoran Heling <projects@yorhel.nl>.

SEE ALSO

du (1)