510 lines
19 KiB
Groff
510 lines
19 KiB
Groff
|
.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
|
||
|
.\"
|
||
|
.\" Standard preamble:
|
||
|
.\" ========================================================================
|
||
|
.de Sp \" Vertical space (when we can't use .PP)
|
||
|
.if t .sp .5v
|
||
|
.if n .sp
|
||
|
..
|
||
|
.de Vb \" Begin verbatim text
|
||
|
.ft CW
|
||
|
.nf
|
||
|
.ne \\$1
|
||
|
..
|
||
|
.de Ve \" End verbatim text
|
||
|
.ft R
|
||
|
.fi
|
||
|
..
|
||
|
.\" Set up some character translations and predefined strings. \*(-- will
|
||
|
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
||
|
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
||
|
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
||
|
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
||
|
.\" nothing in troff, for use with C<>.
|
||
|
.tr \(*W-
|
||
|
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
||
|
.ie n \{\
|
||
|
. ds -- \(*W-
|
||
|
. ds PI pi
|
||
|
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
||
|
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
||
|
. ds L" ""
|
||
|
. ds R" ""
|
||
|
. ds C` ""
|
||
|
. ds C' ""
|
||
|
'br\}
|
||
|
.el\{\
|
||
|
. ds -- \|\(em\|
|
||
|
. ds PI \(*p
|
||
|
. ds L" ``
|
||
|
. ds R" ''
|
||
|
. ds C`
|
||
|
. ds C'
|
||
|
'br\}
|
||
|
.\"
|
||
|
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
||
|
.ie \n(.g .ds Aq \(aq
|
||
|
.el .ds Aq '
|
||
|
.\"
|
||
|
.\" If the F register is >0, we'll generate index entries on stderr for
|
||
|
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
||
|
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
||
|
.\" output yourself in some meaningful fashion.
|
||
|
.\"
|
||
|
.\" Avoid warning from groff about undefined register 'F'.
|
||
|
.de IX
|
||
|
..
|
||
|
.nr rF 0
|
||
|
.if \n(.g .if rF .nr rF 1
|
||
|
.if (\n(rF:(\n(.g==0)) \{\
|
||
|
. if \nF \{\
|
||
|
. de IX
|
||
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
||
|
..
|
||
|
. if !\nF==2 \{\
|
||
|
. nr % 0
|
||
|
. nr F 2
|
||
|
. \}
|
||
|
. \}
|
||
|
.\}
|
||
|
.rr rF
|
||
|
.\"
|
||
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
||
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
||
|
. \" fudge factors for nroff and troff
|
||
|
.if n \{\
|
||
|
. ds #H 0
|
||
|
. ds #V .8m
|
||
|
. ds #F .3m
|
||
|
. ds #[ \f1
|
||
|
. ds #] \fP
|
||
|
.\}
|
||
|
.if t \{\
|
||
|
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
||
|
. ds #V .6m
|
||
|
. ds #F 0
|
||
|
. ds #[ \&
|
||
|
. ds #] \&
|
||
|
.\}
|
||
|
. \" simple accents for nroff and troff
|
||
|
.if n \{\
|
||
|
. ds ' \&
|
||
|
. ds ` \&
|
||
|
. ds ^ \&
|
||
|
. ds , \&
|
||
|
. ds ~ ~
|
||
|
. ds /
|
||
|
.\}
|
||
|
.if t \{\
|
||
|
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
||
|
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
||
|
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
||
|
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
||
|
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
||
|
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
||
|
.\}
|
||
|
. \" troff and (daisy-wheel) nroff accents
|
||
|
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
||
|
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
||
|
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
||
|
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
||
|
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
||
|
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
||
|
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
||
|
.ds ae a\h'-(\w'a'u*4/10)'e
|
||
|
.ds Ae A\h'-(\w'A'u*4/10)'E
|
||
|
. \" corrections for vroff
|
||
|
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
||
|
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
||
|
. \" for low resolution devices (crt and lpr)
|
||
|
.if \n(.H>23 .if \n(.V>19 \
|
||
|
\{\
|
||
|
. ds : e
|
||
|
. ds 8 ss
|
||
|
. ds o a
|
||
|
. ds d- d\h'-1'\(ga
|
||
|
. ds D- D\h'-1'\(hy
|
||
|
. ds th \o'bp'
|
||
|
. ds Th \o'LP'
|
||
|
. ds ae ae
|
||
|
. ds Ae AE
|
||
|
.\}
|
||
|
.rm #[ #] #H #V #F C
|
||
|
.\" ========================================================================
|
||
|
.\"
|
||
|
.IX Title "NCDU 1"
|
||
|
.TH NCDU 1 "2021-07-22" "ncdu-2.0" "ncdu manual"
|
||
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||
|
.\" way too many mistakes in technical documents.
|
||
|
.if n .ad l
|
||
|
.nh
|
||
|
.SH "NAME"
|
||
|
ncdu \- NCurses Disk Usage
|
||
|
.SH "SYNOPSIS"
|
||
|
.IX Header "SYNOPSIS"
|
||
|
\&\fBncdu\fR [\fIoptions\fR] \fIdir\fR
|
||
|
.SH "DESCRIPTION"
|
||
|
.IX Header "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.
|
||
|
.SH "OPTIONS"
|
||
|
.IX Header "OPTIONS"
|
||
|
.SS "Mode Selection"
|
||
|
.IX Subsection "Mode Selection"
|
||
|
.IP "\-h, \-\-help" 4
|
||
|
.IX Item "-h, --help"
|
||
|
Print a short help message and quit.
|
||
|
.IP "\-v, \-V, \-\-version" 4
|
||
|
.IX Item "-v, -V, --version"
|
||
|
Print ncdu version and quit.
|
||
|
.IP "\-f \fI\s-1FILE\s0\fR" 4
|
||
|
.IX Item "-f FILE"
|
||
|
Load the given file, which has earlier been created with the \f(CW\*(C`\-o\*(C'\fR option. If
|
||
|
\&\fI\s-1FILE\s0\fR is equivalent to \f(CW\*(C`\-\*(C'\fR, the file is read from standard input.
|
||
|
.Sp
|
||
|
For the sake of preventing a screw-up, the current version of ncdu will assume
|
||
|
that the directory information in the imported file does not represent the
|
||
|
filesystem on which the file is being imported. That is, the refresh, file
|
||
|
deletion and shell spawning options in the browser will be disabled.
|
||
|
.IP "\fIdir\fR" 4
|
||
|
.IX Item "dir"
|
||
|
Scan the given directory.
|
||
|
.IP "\-o \fI\s-1FILE\s0\fR" 4
|
||
|
.IX Item "-o FILE"
|
||
|
Export all necessary information to \fI\s-1FILE\s0\fR instead of opening the browser
|
||
|
interface. If \fI\s-1FILE\s0\fR is \f(CW\*(C`\-\*(C'\fR, the data is written to standard output. See the
|
||
|
examples section below for some handy use cases.
|
||
|
.Sp
|
||
|
Be warned that the exported data may grow quite large when exporting a
|
||
|
directory with many files. 10.000 files will get you an export in the order of
|
||
|
600 to 700 KiB uncompressed, or a little over 100 KiB when compressed with
|
||
|
gzip. This scales linearly, so be prepared to handle a few tens of megabytes
|
||
|
when dealing with millions of files.
|
||
|
.IP "\-e" 4
|
||
|
.IX Item "-e"
|
||
|
Enable extended information mode. This will, in addition to the usual file
|
||
|
information, also read the ownership, permissions and last modification time
|
||
|
for each file. This will result in higher memory usage (by roughly ~30%) and in
|
||
|
a larger output file when exporting.
|
||
|
.Sp
|
||
|
When using the file export/import function, this flag will need to be added
|
||
|
both when exporting (to make sure the information is added to the export), and
|
||
|
when importing (to read this extra information in memory). This flag has no
|
||
|
effect when importing a file that has been exported without the extended
|
||
|
information.
|
||
|
.Sp
|
||
|
This enables viewing and sorting by the latest child mtime, or modified time,
|
||
|
using 'm' and 'M', respectively.
|
||
|
.SS "Interface options"
|
||
|
.IX Subsection "Interface options"
|
||
|
.IP "\-0" 4
|
||
|
.IX Item "-0"
|
||
|
Don't give any feedback while scanning a directory or importing a file, other
|
||
|
than when a fatal error occurs. Ncurses will not be initialized until the scan
|
||
|
is complete. When exporting the data with \f(CW\*(C`\-o\*(C'\fR, ncurses will not be
|
||
|
initialized at all. This option is the default when exporting to standard
|
||
|
output.
|
||
|
.IP "\-1" 4
|
||
|
.IX Item "-1"
|
||
|
Similar to \f(CW\*(C`\-0\*(C'\fR, but does give feedback on the scanning progress with a single
|
||
|
line of output. This option is the default when exporting to a file.
|
||
|
.Sp
|
||
|
In some cases, the ncurses browser interface which you'll see after the
|
||
|
scan/import is complete may look garbled when using this option. If you're not
|
||
|
exporting to a file, \f(CW\*(C`\-2\*(C'\fR is probably a better choice.
|
||
|
.IP "\-2" 4
|
||
|
.IX Item "-2"
|
||
|
Provide a full-screen ncurses interface while scanning a directory or importing
|
||
|
a file. This is the only interface that provides feedback on any non-fatal
|
||
|
errors while scanning.
|
||
|
.IP "\-q" 4
|
||
|
.IX Item "-q"
|
||
|
Quiet mode. While scanning or importing the directory, ncdu will update the
|
||
|
screen 10 times a second by default, this will be decreased to once every 2
|
||
|
seconds in quiet mode. Use this feature to save bandwidth over remote
|
||
|
connections. This option has no effect when \f(CW\*(C`\-0\*(C'\fR is used.
|
||
|
.IP "\-r" 4
|
||
|
.IX Item "-r"
|
||
|
Read-only mode. This will disable the built-in file deletion feature. This
|
||
|
option has no effect when \f(CW\*(C`\-o\*(C'\fR is used, because there will not be a browser
|
||
|
interface in that case. It has no effect when \f(CW\*(C`\-f\*(C'\fR is used, either, because
|
||
|
the deletion feature is disabled in that case anyway.
|
||
|
.Sp
|
||
|
\&\s-1WARNING:\s0 This option will only prevent deletion through the file browser. It is
|
||
|
still possible to spawn a shell from ncdu and delete or modify files from
|
||
|
there. To disable that feature as well, pass the \f(CW\*(C`\-r\*(C'\fR option twice (see
|
||
|
\&\f(CW\*(C`\-rr\*(C'\fR).
|
||
|
.IP "\-rr" 4
|
||
|
.IX Item "-rr"
|
||
|
In addition to \f(CW\*(C`\-r\*(C'\fR, this will also disable the shell spawning feature of the
|
||
|
file browser.
|
||
|
.IP "\-\-si" 4
|
||
|
.IX Item "--si"
|
||
|
List sizes using base 10 prefixes, that is, powers of 1000 (\s-1KB, MB,\s0 etc), as
|
||
|
defined in the International System of Units (\s-1SI\s0), instead of the usual base 2
|
||
|
prefixes, that is, powers of 1024 (KiB, MiB, etc).
|
||
|
.IP "\-\-confirm\-quit" 4
|
||
|
.IX Item "--confirm-quit"
|
||
|
Requires a confirmation before quitting ncdu. Very helpful when you
|
||
|
accidentally press 'q' during or after a very long scan.
|
||
|
.IP "\-\-color \fI\s-1SCHEME\s0\fR" 4
|
||
|
.IX Item "--color SCHEME"
|
||
|
Select a color scheme. Currently only two schemes are recognized: \fIoff\fR to
|
||
|
disable colors (the default) and \fIdark\fR for a color scheme intended for dark
|
||
|
backgrounds.
|
||
|
.SS "Scan Options"
|
||
|
.IX Subsection "Scan Options"
|
||
|
These options affect the scanning progress, and have no effect when importing
|
||
|
directory information from a file.
|
||
|
.IP "\-x" 4
|
||
|
.IX Item "-x"
|
||
|
Do not cross filesystem boundaries, i.e. only count files and directories on
|
||
|
the same filesystem as the directory being scanned.
|
||
|
.IP "\-\-exclude \fI\s-1PATTERN\s0\fR" 4
|
||
|
.IX Item "--exclude PATTERN"
|
||
|
Exclude files that match \fI\s-1PATTERN\s0\fR. The files will still be displayed by
|
||
|
default, but are not counted towards the disk usage statistics. This argument
|
||
|
can be added multiple times to add more patterns.
|
||
|
.IP "\-X \fI\s-1FILE\s0\fR, \-\-exclude\-from \fI\s-1FILE\s0\fR" 4
|
||
|
.IX Item "-X FILE, --exclude-from FILE"
|
||
|
Exclude files that match any pattern in \fI\s-1FILE\s0\fR. Patterns should be separated
|
||
|
by a newline.
|
||
|
.IP "\-\-exclude\-caches" 4
|
||
|
.IX Item "--exclude-caches"
|
||
|
Exclude directories containing \s-1CACHEDIR.TAG.\s0 The directories will still be
|
||
|
displayed, but not their content, and they are not counted towards the disk
|
||
|
usage statistics.
|
||
|
See http://www.brynosaurus.com/cachedir/
|
||
|
.IP "\-L, \-\-follow\-symlinks" 4
|
||
|
.IX Item "-L, --follow-symlinks"
|
||
|
Follow symlinks and count the size of the file they point to. As of ncdu 1.14,
|
||
|
this option will not follow symlinks to directories and will count each
|
||
|
symlinked file as a unique file (i.e. unlike how hard links are handled). This
|
||
|
is subject to change in later versions.
|
||
|
.IP "\-\-exclude\-firmlinks" 4
|
||
|
.IX Item "--exclude-firmlinks"
|
||
|
(MacOS only) Exclude firmlinks.
|
||
|
.IP "\-\-exclude\-kernfs" 4
|
||
|
.IX Item "--exclude-kernfs"
|
||
|
(Linux only) Exclude Linux pseudo filesystems, e.g. /proc (procfs), /sys (sysfs).
|
||
|
.Sp
|
||
|
The complete list of currently known pseudo filesystems is: binfmt, bpf, cgroup,
|
||
|
cgroup2, debug, devpts, proc, pstore, security, selinux, sys, trace.
|
||
|
.SH "KEYS"
|
||
|
.IX Header "KEYS"
|
||
|
.IP "?" 4
|
||
|
Show help + keys + about screen
|
||
|
.IP "up, down j, k" 4
|
||
|
.IX Item "up, down j, k"
|
||
|
Cycle through the items
|
||
|
.IP "right, enter, l" 4
|
||
|
.IX Item "right, enter, l"
|
||
|
Open selected directory
|
||
|
.IP "left, <, h" 4
|
||
|
.IX Item "left, <, h"
|
||
|
Go to parent directory
|
||
|
.IP "n" 4
|
||
|
.IX Item "n"
|
||
|
Order by filename (press again for descending order)
|
||
|
.IP "s" 4
|
||
|
.IX Item "s"
|
||
|
Order by filesize (press again for descending order)
|
||
|
.IP "C" 4
|
||
|
.IX Item "C"
|
||
|
Order by number of items (press again for descending order)
|
||
|
.IP "a" 4
|
||
|
.IX Item "a"
|
||
|
Toggle between showing disk usage and showing apparent size.
|
||
|
.IP "M" 4
|
||
|
.IX Item "M"
|
||
|
Order by latest child mtime, or modified time. (press again for descending order)
|
||
|
Requires the \-e flag.
|
||
|
.IP "d" 4
|
||
|
.IX Item "d"
|
||
|
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.
|
||
|
.IP "t" 4
|
||
|
.IX Item "t"
|
||
|
Toggle dirs before files when sorting.
|
||
|
.IP "g" 4
|
||
|
.IX Item "g"
|
||
|
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.
|
||
|
.IP "c" 4
|
||
|
.IX Item "c"
|
||
|
Toggle display of child item counts.
|
||
|
.IP "m" 4
|
||
|
.IX Item "m"
|
||
|
Toggle display of latest child mtime, or modified time. Requires the \-e flag.
|
||
|
.IP "e" 4
|
||
|
.IX Item "e"
|
||
|
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.
|
||
|
.IP "i" 4
|
||
|
.IX Item "i"
|
||
|
Show information about the current selected item.
|
||
|
.IP "r" 4
|
||
|
.IX Item "r"
|
||
|
Refresh/recalculate the current directory.
|
||
|
.IP "b" 4
|
||
|
.IX Item "b"
|
||
|
Spawn shell in current directory.
|
||
|
.Sp
|
||
|
Ncdu will determine your preferred shell from the \f(CW\*(C`NCDU_SHELL\*(C'\fR or \f(CW\*(C`SHELL\*(C'\fR
|
||
|
variable (in that order), or will call \f(CW\*(C`/bin/sh\*(C'\fR 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 \fBvifm\fR\|(1) file manager instead of a shell,
|
||
|
run ncdu as follows:
|
||
|
.Sp
|
||
|
.Vb 2
|
||
|
\& export NCDU_SHELL=vifm
|
||
|
\& ncdu
|
||
|
.Ve
|
||
|
.Sp
|
||
|
Ncdu will set the \f(CW\*(C`NCDU_LEVEL\*(C'\fR environment variable or increment it before
|
||
|
spawning the shell. This variable allows you to detect when your shell is
|
||
|
running from within ncdu, which can be useful to avoid nesting multiple
|
||
|
instances of ncdu. Ncdu itself does not (currently) warn when attempting to run
|
||
|
nested instances.
|
||
|
.IP "q" 4
|
||
|
.IX Item "q"
|
||
|
Quit
|
||
|
.SH "FILE FLAGS"
|
||
|
.IX Header "FILE FLAGS"
|
||
|
Entries in the browser interface may be prefixed by a one-character flag. These
|
||
|
flags have the following meaning:
|
||
|
.IP "!" 4
|
||
|
An error occurred while reading this directory.
|
||
|
.IP "." 4
|
||
|
An error occurred while reading a subdirectory, so the indicated size may not be
|
||
|
correct.
|
||
|
.IP "<" 4
|
||
|
File or directory is excluded from the statistics by using exclude patterns.
|
||
|
.IP ">" 4
|
||
|
Directory is on another filesystem.
|
||
|
.IP "^" 4
|
||
|
Directory is excluded from the statistics due to being a Linux pseudo filesystem.
|
||
|
.IP "@" 4
|
||
|
This is neither a file nor a folder (symlink, socket, ...).
|
||
|
.IP "H" 4
|
||
|
.IX Item "H"
|
||
|
Same file was already counted (hard link).
|
||
|
.IP "e" 4
|
||
|
.IX Item "e"
|
||
|
Empty directory.
|
||
|
.SH "EXAMPLES"
|
||
|
.IX Header "EXAMPLES"
|
||
|
To scan and browse the directory you're currently in, all you need is a simple:
|
||
|
.PP
|
||
|
.Vb 1
|
||
|
\& ncdu
|
||
|
.Ve
|
||
|
.PP
|
||
|
If you want to scan a full filesystem, your root filesystem, for example, then
|
||
|
you'll want to use \f(CW\*(C`\-x\*(C'\fR:
|
||
|
.PP
|
||
|
.Vb 1
|
||
|
\& ncdu \-x /
|
||
|
.Ve
|
||
|
.PP
|
||
|
Since scanning a large directory may take a while, you can scan a directory and
|
||
|
export the results for later viewing:
|
||
|
.PP
|
||
|
.Vb 3
|
||
|
\& ncdu \-1xo\- / | gzip >export.gz
|
||
|
\& # ...some time later:
|
||
|
\& zcat export.gz | ncdu \-f\-
|
||
|
.Ve
|
||
|
.PP
|
||
|
To export from a cron job, make sure to replace \f(CW\*(C`\-1\*(C'\fR with \f(CW\*(C`\-0\*(C'\fR to suppress
|
||
|
any unnecessary output.
|
||
|
.PP
|
||
|
You can also export a directory and browse it once scanning is done:
|
||
|
.PP
|
||
|
.Vb 1
|
||
|
\& ncdu \-o\- | tee export.file | ./ncdu \-f\-
|
||
|
.Ve
|
||
|
.PP
|
||
|
The same is possible with gzip compression, but is a bit kludgey:
|
||
|
.PP
|
||
|
.Vb 1
|
||
|
\& ncdu \-o\- | gzip | tee export.gz | gunzip | ./ncdu \-f\-
|
||
|
.Ve
|
||
|
.PP
|
||
|
To scan a system remotely, but browse through the files locally:
|
||
|
.PP
|
||
|
.Vb 1
|
||
|
\& ssh \-C user@system ncdu \-o\- / | ./ncdu \-f\-
|
||
|
.Ve
|
||
|
.PP
|
||
|
The \f(CW\*(C`\-C\*(C'\fR 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.
|
||
|
.SH "HARD LINKS"
|
||
|
.IX Header "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.
|
||
|
.PP
|
||
|
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.
|
||
|
.PP
|
||
|
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 \*(L"duplicate\*(R" and which as \*(L"original\*(R". The indicated size of the topmost
|
||
|
directory (that is, the one specified on the command line upon starting ncdu)
|
||
|
is always correct.
|
||
|
.PP
|
||
|
ncdu 1.7 and later has improved hard link detection. Each file that has more
|
||
|
than two links has the \*(L"H\*(R" 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.
|
||
|
.SH "BUGS"
|
||
|
.IX Header "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.
|
||
|
.PP
|
||
|
Some minor glitches may appear when displaying filenames that contain multibyte
|
||
|
or multicolumn characters.
|
||
|
.PP
|
||
|
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.
|
||
|
.PP
|
||
|
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.
|
||
|
.PP
|
||
|
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.16) not detected, so it may also cause
|
||
|
ncdu to get stuck in an infinite loop and eventually run out of memory.
|
||
|
.PP
|
||
|
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
|
||
|
.SH "AUTHOR"
|
||
|
.IX Header "AUTHOR"
|
||
|
Written by Yoran Heling <projects@yorhel.nl>.
|
||
|
.SH "SEE ALSO"
|
||
|
.IX Header "SEE ALSO"
|
||
|
\&\fBdu\fR\|(1)
|