Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ossobv/dutree

dutree (python lib/cli) helps quickly find which files/dirs are taking up space. Compare it with a summary of ncdu.
https://github.com/ossobv/dutree

cli disk-usage library

Last synced: about 2 months ago
JSON representation

dutree (python lib/cli) helps quickly find which files/dirs are taking up space. Compare it with a summary of ncdu.

Awesome Lists containing this project

README

        

dutree :: Disk usage summary
============================

*dutree* shows a summary of the directories/files which take up the most
space.

Instead of showing *only the root of the files* with sizes, or the
details of *every file*, it shows *only the paths taking up the most
space*.

Example usage::

$ dutree /srv --apparent-size

Annotated output, where only paths of >5% of the total size are shown
(which is about 4GB for this dataset)::

12.1 G /srv/data/audiofiles/
^-- audiofiles contains files/dirs with a total of 12.1G
but it does NOT contain a single dir or file larger
than 4G.
4.3 G /srv/data/callrecordings/unmatched/
4.5 G /srv/data/fax/
17.5 G /srv/data/playlists/
34.4 G /srv/data/twinfield_invoices/1/
7.8 G /srv/data/*
^-- data contains more files/directories than shown above
but those that don't total above 4G are merged into
this "leftover" node. that includes everything in
/twinfield_invoices/ except for the /1/ subdirectory
which has its individual listing above.
32 B /srv/*
^-- only /data/ is in /srv/, but the directory itself also
takes up a tiny bit of space
-----
80.6 G TOTAL (86558511658)

**NOTE**: The directories do not count the size of themselves, only of
their contents. This explains any discrepancies with ``du -sb`` output.

Library usage::

>>> from dutree import Scanner
>>> scanner = Scanner('/srv')
>>> tree = scanner.scan(use_apparent_size=True)
>>> tree.app_size()
86558511658

>>> len(tree.get_leaves())
7

>>> leaf0 = tree.get_leaves()[0]
>>> leaf0.name()
'/srv/data/audiofiles/'

>>> leaf0.app_size() / (1024.0 * 1024 * 1024)
12.092280263081193

Development:

- Please run the python2 and python3 tests after developing::

python2 dutree/test_dutree.py
python3 dutree/test_dutree.py

History
-------

* v1.8

- **Add experimental feature to do scanning from a file instead of the
filesystem.**
See commit bbebcf98 for details.
Original code by Seppe Lucas.

* v1.7

- **Skip /proc and /sys filesystems by default.**
- **Use --xdev to stay on the same filesystem.**
- **Uses --count-blocks by default; use --apparent-size to negate.**

* v1.6

- **Fix so the tests work with Python 3 as well.**
- **Fix grave bugs with real size.**
The real size calculation was wrong sometimes, it could raise
assertions or the leaf count could be off.

* v1.5

- **Add apparent vs. real size.**
Deprecates ``node.size()``. Use ``node.app_size()`` instead.
Get the real used size using ``node.use_size()``.
Group by real used size by passing ``use_apparent_size=False`` to
``scan()``.
- **Don't die if we cannot enter directories.**