Skip to main content

Just another disk usage analyzer with treemap GUI.

Project description

disk_treemap

Just another disk usage analyzer with treemap GUI.

Pros

  • Written in Python. Easy to run, modify and extend. Cross platform support. (Tested on Linux, Windows, and Android with Termux.)
  • B/S structure. You can run the scanner on a remote machine, and view treemap via a browser on a local machine
  • Support save/load a treemap. You can run the scanner on a machine, then copy result to another one and view it.
  • Support S3 and S3 compatible object storage service
  • Support using Everything by voidtools to speedup scanning extraordinarily.

Cons

  • The web base frontend may suffer from performance issue if the treemap is too large.

Installation

Install via pip package installer

pip install disk_treemap

Build and install from source

dependencies:

  • npm: npm must be in PATH to build static. Make sure NodeJS and npm is installed and in PATH.
# clone the repository
git clone 
git submodule update --recursive
# build static
python3 setup.py build_static

#build wheel
python3 setup.py bdist_wheel
#install built wheel 
pip install dist/disk_treemap-1.0.0-py3-none-any.whl # change the filename

Usage

usage: disk-treemap [-h] [--size-tree-path SIZE_TREE_PATH] [--overwrite]
                    [--scan-only] [--host HOST] [--port PORT] [--compression]
                    [--endpoint-url ENDPOINT_URL] [--follow-links]
                    [--follow-mounts] [--everything]
                    [paths ...]

positional arguments:
  paths                 path(s) to scan. If multiple paths is provided, they
                        will be show in root side by side. S3 or compatible
                        object storage service is supported by a "s3://"
                        prefixed URI

optional arguments:
  -h, --help            show this help message and exit
  --size-tree-path SIZE_TREE_PATH, --size_tree_path SIZE_TREE_PATH, -f SIZE_TREE_PATH
                        path to save scan result as a JSON file
  --overwrite, -o       overwrite existed JSON file. default to False
  --scan-only, --scan_only, -s
                        scan and save JSON file but do not start web server.
                        default to False
  --host HOST, -H HOST  listening host of the web server
  --port PORT, -p PORT  listening port of the web server. default to 8000
  --compression, -c     enable compression of web server. require
                        flask_compress to operate. default to False
  --endpoint-url ENDPOINT_URL
                        custom endpoint url, only affects S3
  --follow-links, --follow_links
                        follow symlinks
  --follow-mounts, --follow_mounts
                        follow mounts
  --everything          use Everything by voidtools to speedup scanning. The
                        result will be absolute path. Everything must be
                        running and only x64 version is supported.

You may also use the module directly: python -m disk_treemap.main. Same arguments apply.

A size_tree.json will be generated in the current directory. It contains file tree and file size information. Keep it safe!

Typical Usage

Analyze an ordinary computer

  1. Run disk-treemap <Paths to analyze>

  2. After listening 127.0.0.1:8000 appearing, open browser and navigate to http://127.0.0.1:8000 .

Analyze a Windows computer with Everything x64 installed

  1. Make sure Everything x64 is running. Get it from https://www.voidtools.com/ if it's not installed. It's free.

  2. Run disk-treemap --everything <Paths to analyze>

  3. After listening 127.0.0.1:8000 appearing, open browser and navigate to http://127.0.0.1:8000 .

Analyze a remote Linux server, view on the local machine

  1. Run disk-treemap <Paths to analyze> --host 0.0.0.0.

    If bandwidth between the server and the local machine is limited, try to install optional dependencies and append --compression to command above to enable compression.

  2. After listening 0.0.0.0:8000 appearing, open browser on the local machine and navigate to http: //:8000 .

Analyze a remote Linux server without external accessible IP, view on the local machine

  1. Run disk-treemap <Paths to analyze> --scan_only

  2. After process exit without error. There should be a file named size_tree.json in the current directory. Copy the file to local machine using rsync or other tools.

  3. Run disk-treemap in the directory where the copied file located.

  4. After listening 127.0.0.1:8000 appearing, open browser and navigate to http://127.0.0.1:8000 .

Install and analyze an Android phone with Termux

  1. Install Termux https://termux.com/

  2. Install Python and pip in Termux https://wiki.termux.com/wiki/Python

  3. Install disk_treemap via pip: pip install disk_treemap

  4. Just do analyze as your phone is an ordinary computer.

TODO

  • Provide more visualization. Icicle/flame, sunburst maybe.

  • Use NTFS USN Journal to speed up scanning on Windows.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

disk_treemap-1.0.10.tar.gz (157.4 kB view details)

Uploaded Source

Built Distribution

disk_treemap-1.0.10-py3-none-any.whl (157.7 kB view details)

Uploaded Python 3

File details

Details for the file disk_treemap-1.0.10.tar.gz.

File metadata

  • Download URL: disk_treemap-1.0.10.tar.gz
  • Upload date:
  • Size: 157.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for disk_treemap-1.0.10.tar.gz
Algorithm Hash digest
SHA256 b5ef752a19ed7518107554ac2199712e4019fcd4f400f9eb78678393d3637e33
MD5 924e9b07be61c708b67a863219f22569
BLAKE2b-256 ec4cbebb292e14764c8b4ea01192fd0a8c4d75a5deb9aab8fb3bfdabe426b01e

See more details on using hashes here.

File details

Details for the file disk_treemap-1.0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for disk_treemap-1.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 df79ab0f0c6e743f26c335898e5b98df9df2dddc9598abd4c46a47e318b76ce0
MD5 aa13d7554fbe5fea6325625db1044b25
BLAKE2b-256 d259e0d1b3c658726f74dd3ffb83aa937a0e0d8424cdcf5b343f397016e4bae5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page