Dude, where are my bytes: Duc, a library and suite of tools for inspecting disk usage

Related tags

duc
Overview

Build Status Conda Version

Duc is a collection of tools for indexing, inspecting and visualizing disk usage. Duc maintains a database of accumulated sizes of directories of the file system, and allows you to query this database with some tools, or create fancy graphs showing you where your bytes are.

Check the Duc homepage for more information, documentation and news.

duc gui

Issues
  • Problem building duc-1.2 on Solaris 11.2 x86_64

    Problem building duc-1.2 on Solaris 11.2 x86_64

    An attempt to build duc-1.2 on Solaris 11.2 x86_64 fails first at,

    In file included from src/libduc/private.h:4:0, from src/libduc/buffer.c:11: src/libduc/duc.h:79:12: error: ‘NAME_MAX’ undeclared here (not in a function)

    Replacing NAME_MAX with MAXNAMLEN as suggested here, https://www.midnight-commander.org/ticket/1943 then gets to,

    gcc -DHAVE_CONFIG_H -I. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -D_REENTRANT -D_PTHREADS -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -D_REENTRANT -D_PTHREADS -D_POSIX_PTHREAD_SEMANTICS -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/opt/csw/include -Isrc/libduc -Isrc/libduc-graph -g -O2 -MT src/libduc/db.o -MD -MP -MF $depbase.Tpo -c -o src/libduc/db.o src/libduc/db.c &&
    mv -f $depbase.Tpo $depbase.Po src/libduc/db.c: In function ‘db_write_dir’: src/libduc/db.c:40:19: error: ‘DT_DIR’ undeclared (first use in this function) src/libduc/db.c:40:19: note: each undeclared identifier is reported only once for each function it appears in src/libduc/db.c: In function ‘db_read_dir’: src/libduc/db.c:102:14: error: ‘DT_DIR’ undeclared (first use in this function) gmake[1]: *** [src/libduc/db.o] Error 1

    I haven't tried a fix for that yet, but would something like the following be appropriate? http://notmuchmail.org/pipermail/notmuch/2009/001002.html

    P.S. I am actually much more interested in getting this to work on Solaris than OS X since we have a number of large Solaris filesystems that I am currently indexing with duc over NFS to Linux clients that I would rather index directly on the fileservers if possible. FWIW, I believe I got an earlier release to compile a few months ago without running into DT_DIR.

    Thanks

    opened by stuartthebruce 31
  • indexed directories must be present at analysis?

    indexed directories must be present at analysis?

    Hi Ico,

    as mentioned back in January, we use duc to visualize group share usage on our file servers. We generate the duc database files on the file servers and then copy them to the 'visualization web server' where people can view their CGI graphs. So far so good, working great with the duc version I compiled back in January. Now I pulled the latest commits and recompiled, and I have the following problem: directly on the file servers it still works great. On the web server however (duc DBs copied over), duc info shows the root directory of the database, but then duc ls doesn't give any output. I used strace to try and debug the problem and saw this:

    lstat("/export", 0x7fff1e1a0000) = -1 ENOENT (No such file or directory)

    /export/groupdata/ is the top level directory of the shares on our file servers. It doesn't exist on the web server though, and apparently some commit between January and last Friday now requires indexed directories to be present at the time of analyzing the database? Is this intended behavior? If not necessary, it'd be great if analysis could run irrespective of directories existing at run time.

    thanks, -Christian

    opened by daduke 30
  • MDB_MAP_FULL: Environment mapsize limit reached

    MDB_MAP_FULL: Environment mapsize limit reached

    Hello,

    I'm running 495be899016f (thank you for the lmdb update by the way), and I've reached the maximum mapsize while indexing a huge directory (>100 millions files):

    MDB_MAP_FULL: Environment mapsize limit reached
    

    Indeed, the .duc.db reached 1GB, which is coherent with mdb_env_set_mapsize(db->env, 1024u * 1024u * 1024u); in db-lmdb.c.

    The documentation suggests that it could the map size could be increased.

    It looks like quite lmdb specific, so I have no useful suggestion. Maybe an index option for setting the maximum size of the database that will only be used for concerned backends ?

    opened by jbd 20
  • Dude, where is my database? - scanning a large folder yields non-usable database

    Dude, where is my database? - scanning a large folder yields non-usable database

    Hey, So I wanted to use duc on our 10TB drive. I ran it twice for about a week and got twice the output below, aka, it does not recognised anything indexed. what can I do?

    The database at /srv/git/guy/duc.db is 3.2G, so its storing something, but I can't access it.

    duc version: 1.3.3 options: cairo x11 ui tokyocabinet

    Running on Ubuntu 15.10

    [email protected]:/mnt# duc index --database /srv/git/guy/duc.db /srv/git/pro --verbose
    Writing to database "/srv/git/guy/duc.db"
    Indexed 669579957 files and 768915 directories, (8.5TB apparent, 10.3TB actual) in 4 days, 07 hours, 52 minutes, a
    [email protected]:/srv# duc  info --database /srv/git/guy/duc.db  /srv/git/pro --verbose
    Reading from database "/srv/git/guy/duc.db"
    Date       Time       Files    Dirs    Size Path
    [email protected]:/srv#
    
    opened by guysoft 19
  • Per user filtering

    Per user filtering

    At work I have to monitor files that differ on a per-user basis, so it would be nice to produce graphs that are limited to a single user and / or use the data to produce a graph that showed the percentage of the disk space used by a specific user. This way I could send users graphs of the disk usage limited to their user.

    The basic use case is I want to have a cron job that sends out an e-mail to each user telling them how much disk they are using as a percentage in a pie chart with all users listed, and below that another graph that shows them where their specific user's disk usage is concentrated in, which is a normal duc graph filtered for their user. The user could tell from the first graph whether they needed to take action, then from the second graph they could figure out where big files were if they wanted to delete them.

    opened by ech3 18
  • Coordinate problem when scrolling in cgi mode

    Coordinate problem when scrolling in cgi mode

    For duc version 1.4.1 in cgi mode it the coordinates used by the tooltip and clicking on the map get out of sync when scrolling in the browser. I have observed this on OSX 10.11 using Firefox, Safari and Chrome. In particular, after scrolling a CGI page the tooltip display, and actually clicking, are referencing the part of the cgi map that would have been displayed at the location on my screen if I had not scrolled, i.e., they are unaware of scrolling.

    opened by stuartthebruce 17
  • some CGI graphs don't work

    some CGI graphs don't work

    Hi Ico,

    sorry, not quite done yet :) It's almost working now, but one thing we noticed: when displaying CGI graphs, some clicks on the graph just yield a broken icon. I do not see a pattern, but here's what I know:

    • all other interfaces (ls, graph, gui and ui) seem to work fine
    • in the apache log, a working request reads [Tue Apr 21 09:28:35 2015] [error] [client 192.33.x.y] /opt/usradm2/htdocs/groupreport/webreport/qo/qo/index.cgi: line 2: 17876 Segmentation fault /opt/duc/bin/duc cgi -d duc.db, referer: https://admin.phys.ethz.ch/groupreport/webreport/qo/qo/index.cgi?cmd=index&path=/export/groupdata/qo
    • a broken requests results in [Tue Apr 21 09:28:41 2015] [error] [client 192.33.x.y] /opt/usradm2/htdocs/groupreport/webreport/qo/qo/index.cgi: line 2: 17880 Segmentation fault /opt/duc/bin/duc cgi -d duc.db, referer: https://admin.phys.ethz.ch/groupreport/webreport/qo/qo/index.cgi?cmd=index&path=/export/groupdata/qo [Tue Apr 21 09:28:41 2015] [error] [client 192.33.x.y] Requested path not found, referer: https://admin.phys.ethz.ch/groupreport/webreport/qo/qo/index.cgi?cmd=index&path=/export/groupdata/qo&?451,296 [Tue Apr 21 09:28:41 2015] [error] [client 192.33.x.y] , referer: https://admin.phys.ethz.ch/groupreport/webreport/qo/qo/index.cgi?cmd=index&path=/export/groupdata/qo&?451,296 [Tue Apr 21 09:28:41 2015] [error] [client 192.33.x.y] Premature end of script headers: index.cgi, referer: https://admin.phys.ethz.ch/groupreport/webreport/qo/qo/index.cgi?cmd=index&path=/export/groupdata/qo&?451,296
    • I can provide a full strace log and the DB file if needed

    thanks, -Christian

    opened by daduke 16
  • How to handle all the db backends

    How to handle all the db backends

    At this time Duc supports five different database backends, all come with some good and some bad. Is it a good idea to keep supporting all of those, or should we pick one (the best?) and drop the rest?

    I did some simple tests to check performance and database size of the various dbs on my little laptop, these are the results. I also added a column indicating if the database files are portable over different architectures, and if the db format is 'crash safe', whatever that means

    database       time   size  portable   crash_safe
    -------------------------------------------------
    tokyocabinet   6.42   39M     no         ?
    sqlite3        6.30   99M     yes        yes
    lmdb           3.48  118M     no         yes
    kyoto          4.28   40M     no         no
    

    I left out leveldb because this backend seems to be kind of broken at the moment - which is one of the downsides of supporting so many.

    So:

    • kyoto is great for performance and compression, but not stable and not portable
    • sqlite is the only portable database - drop this and people can not export db's from solaris to linux
    • lmdb is blazingly fast, but the db size is the largest of all

    Not an easy choice...

    opened by zevv 16
  • Add SVG graph backend

    Add SVG graph backend

    Duc now supports multiple backends for generating graphics: cairo/pango and OpenGL.

    A SVG backend (just printf, not built on top of cairo) should be easy to add, allowing Duc to run with minimal dependencies on embedded systems and small file servers like Synlogogy and QNAP.

    opened by zevv 16
  • munmap_chunk(): invalid pointer: 0x000000000061e270 ***

    munmap_chunk(): invalid pointer: 0x000000000061e270 ***

    This is not the same as issue #80 (I removed the database before running duc). This happened with a git checkout from last friday, pulled from git today, the same. With the 1.0-rc1 the indexing completes with no error. configured with --disable-ui --disable-gui

    # gdb /home/luca/duc/duc
    GNU gdb (GDB) 7.6-6.mga4 (Mageia release 4)
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later 
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-mageia-linux-gnu".
    For bug reporting instructions, please see:
    ...
    Reading symbols from /home/luca/duc/duc...done.
    (gdb) run index -d /var/www/duc.db --exclude=.snapshot --progress /net/netapp01/vol/Data/home/
    Starting program: /home/luca/duc/duc index -d /var/www/duc.db --exclude=.snapshot --progress /net/netapp01/vol/Data/home/
    gobject.pyc: gdb was not built with custom backtrace support, disabling.
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib64/libthread_db.so.1".
    *** Error in `/home/luca/duc/duc': munmap_chunk(): invalid pointer: 0x000000000061e270 ***
    ======= Backtrace: =========
    /lib64/libc.so.6(+0x7287f)[0x7ffff663587f]
    /lib64/libc.so.6(+0x7862e)[0x7ffff663b62e]
    /home/luca/duc/duc[0x405562]
    /home/luca/duc/duc[0x40477f]
    /home/luca/duc/duc[0x408356]
    /home/luca/duc/duc[0x4029ba]
    /lib64/libc.so.6(__libc_start_main+0xf5)[0x7ffff65e4c85]
    /home/luca/duc/duc[0x402abc]
    ======= Memory map: ========
    [omitted]
    Program received signal SIGABRT, Aborted.
    0x00007ffff65f7969 in raise () from /lib64/libc.so.6
    Missing separate debuginfos, use: debuginfo-install glibc-2.18-9.9.mga4.x86_64 lib64bzip2_1-1.0.6-4.mga4.x86_64 lib64cairo2-1.12.16-2.mga4.x86_64 lib64drm2-2.4.51-1.mga4.x86_64 lib64ffi6-3.0.13-2.mga4.x86_64 lib64fontconfig1-2.11.0-2.mga4.x86_64 lib64freetype6-2.5.0.1-3.3.mga4.tainted.x86_64 lib64gbm1-10.0.5-1.1.mga4.tainted.x86_64 lib64glapi0-10.0.5-1.1.mga4.tainted.x86_64 lib64glib2.0_0-2.38.2-4.mga4.x86_64 lib64graphite2_3-1.2.4-1.mga4.x86_64 lib64harfbuzz0-0.9.22-2.mga4.x86_64 lib64lzma5-5.1.2-0.alpha.4.mga4.x86_64 lib64lzmalib1-0.0.1-7.mga4.x86_64 lib64mesaegl1-10.0.5-1.1.mga4.tainted.x86_64 lib64mesagl1-10.0.5-1.1.mga4.tainted.x86_64 lib64pango1.0_0-1.36.1-1.mga4.x86_64 lib64pcre1-8.33-2.1.mga4.x86_64 lib64pixman1_0-0.32.4-1.mga4.x86_64 lib64png16_16-1.6.16-1.mga4.x86_64 lib64tokyocabinet9-1.4.48-3.mga4.x86_64 lib64udev1-208-10.5.mga4.x86_64 lib64wayland-client0-1.3.0-2.mga4.x86_64 lib64wayland-server0-1.3.0-2.mga4.x86_64 lib64x11-xcb1-1.6.2-2.mga4.x86_64 lib64x11_6-1.6.2-2.mga4.x86_64 lib64xau6-1.0.8-3.mga4.x86_64 lib64xcb-dri2_0-1.9.1-2.1.mga4.x86_64 lib64xcb-glx0-1.9.1-2.1.mga4.x86_64 lib64xcb-render0-1.9.1-2.1.mga4.x86_64 lib64xcb-shm0-1.9.1-2.1.mga4.x86_64 lib64xcb-xfixes0-1.9.1-2.1.mga4.x86_64 lib64xcb1-1.9.1-2.1.mga4.x86_64 lib64xdamage1-1.1.4-5.mga4.x86_64 lib64xdmcp6-1.1.1-5.mga4.x86_64 lib64xext6-1.3.2-3.mga4.x86_64 lib64xfixes3-5.0.1-2.mga4.x86_64 lib64xml2_2-2.9.1-2.2.mga4.x86_64 lib64xrender1-0.9.8-2.mga4.x86_64 lib64xxf86vm1-1.1.3-3.mga4.x86_64 lib64zlib1-1.2.8-3.mga4.x86_64 libgcc1-4.8.2-3.2.mga4.x86_64 libstdc++6-4.8.2-3.2.mga4.x86_64
    (gdb) 
    (gdb) bt
    #0  0x00007ffff65f7969 in raise () from /lib64/libc.so.6
    #1  0x00007ffff65f8f98 in abort () from /lib64/libc.so.6
    #2  0x00007ffff6635884 in __libc_message () from /lib64/libc.so.6
    #3  0x00007ffff663b62e in malloc_printerr () from /lib64/libc.so.6
    #4  0x0000000000405562 in list_free (list=0x61e2a0, fn=0x402510 ) at src/libduc/list.c:36
    #5  0x000000000040477f in duc_index_req_free (req=0x61e1f0) at src/libduc/index.c:105
    #6  0x0000000000408356 in index_main (duc=0x61df80, argc=, argv=) at src/duc/cmd-index.c:120
    #7  0x00000000004029ba in main (argc=1, argv=0x7fffffffe1a8) at src/duc/main.c:166
    (gdb)
    
    opened by olivluca 15
  • duc doesn't mention restricted folders on NFS mount

    duc doesn't mention restricted folders on NFS mount

    Hi,

    While indexing a large NFS share (~ 1 Po), I noticed a couple hundreds of To were missing from my grand total. Despite using -v, duc never complained about any folder I would not have access to, but I suspect the missing To are in such undetermined places.

    Running a few tests, I noticed ls has a slightly different behavior in local and on the NFS share.

    Locally :

    $ ls -l test/
    ls: impossible d'ouvrir le répertoire 'test/': Permission non accordée
    

    On the NFS share :

    $ ls -l test/
    ls: lecture du répertoire 'test/': Permission non accordée
    total 0
    

    In both cases the erreor message is the same and echo $? display a code 2, but it appears as if the NFS share returned anyway an empty file list.

    • Is it possible that duc is tricked by this behavior ?
    • Has anyone experienced such a behavior on a NFS4 share ?
    • Is there any known workaround ?

    Some details regarding the mount (slightly redacted using ...) :

    mount -l
    ...:/ on /... type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=...,local_lock=none,addr=...)
    

    Thanks a lot for your help, and this very useful piece of software !

    Best, Sylvain

    opened by maressyl 1
  • duc ls return only file size or number of files

    duc ls return only file size or number of files

    Hi

    I would like to have an option that duc ls returns the sizes (or number of files) only, without the corresponding directory names.

    Thanks for this great software! Chris

    opened by chrisdane 3
  • Possible bug using the

    Possible bug using the "-u" option?

    I am a new user of duc and immediately asked it to index >260 TB of a shared storage area. This operation was successful (after ~30 hours of indexing!). Outstanding interactive, sunburst visualization! Then I attempted to disentangle files scattered in this directory tree owned by a second user, specifying a single userid with the "-u" option. The resulting index was empty -- possibly because none of the top-level directories in the tree were owned by the 2nd user. Is this the intended response from duc? Or did I misuse/misunderstand the -u option?

    I built duc from the github repo. The build appeared successful and created duc version 1.4.5-rc1 running in a SUSE-like environment.

    $ ./duc --version duc version: 1.4.5-rc1 options: cairo x11 ui sqlite3 $ uname -a Linux cori20 4.12.14-150.63-default #1 SMP Mon Nov 16 19:30:39 UTC 2020 (b5a95ac) x86_64 x86_64 x86_64 GNU/Linux

    Thanks for any suggestions.

    • Tom
    opened by TomGlanzman 7
  • max-depth on xml data dump?

    max-depth on xml data dump?

    I'm wondering if there's a way to do something like the --max-depth option but with the duc xml command.

    The use case is that I'd like to see an xml dump, but I don't need it to be that detailed. I know I can create a slimmed-down index using duc index --max-depth=X, but I actually do want the index to be complete. I want to put the depth cutoff at the view level.

    Maybe this is a feature request, or maybe there is a way to do this that I'm not aware of.

    opened by nsheff 0
  • Add df (disk free) info to database

    Add df (disk free) info to database

    It would be great to have the option to show unused space. So in the sunburst this would need to be toggleable in case it saturates the used space - probably just by creating a meta node of used / unused which would allow you to click through as normal

    opened by akkemp 0
  • Print current directory to stdout when quitting GUI and UI

    Print current directory to stdout when quitting GUI and UI

    With this it would be possible to use duc as a directory explorer and plug into all kinds of external tools.

    One simple example (zshrc or bashrc):

    cduc () {
        cd "`duc gui`"
    }
    

    It would also make it possible to build integrations with other file explorers like lf and ranger.

    Relates to #247

    opened by aduros 2
  • COPYING File still in release tarball, missing license headers.

    COPYING File still in release tarball, missing license headers.

    Hi,

    Thanks for the great tool. I am packing it for conda-forge which will allow duc to be distributed using anaconda or miniconda. Licensing matters for distributors.

    There are two issues I noticed when packaging:

    • It is stated that the program is released under the LGPL yet the release tarball for 1.4.4 still contains a COPYING file.
    • There are no license headers in the source code files as is recommended. For me as packager I don't know whether this project is licensed under LGPL 3.0, or under LGPL3.0 or later. This is usually mentioned in these headers.

    Technically this means your latest release (1.4.4) is still under GPL2.0, as there are no license headers to indicate otherwise and only the COPYING file is included in the release tarball, not the LICENSE file. This may not be as you intended, as I can clearly see the license change in the changelog included in the tarball.

    opened by rhpvorderman 5
  • configure fails on opensuse when looking for lmdb

    configure fails on opensuse when looking for lmdb

    When building duc on OpenSUSE 15 (and the previous version 42) and trying to use lmdb as the backend, the compile fails because OpenSUSE doesn't have pkg-config support setup for LMDB.

    opened by l8gravely 0
  • parent doesn't get updated when indexing child

    parent doesn't get updated when indexing child

    I ran apt-get clean on my Debian box to trim down /var/cache/apt, then duc index -p /var/cache. After this, duc ui /var/cache showed the smaller directory size, but duc ui /var didn't.

    opened by aspiers 16
  • Exceeding max DB size?

    Exceeding max DB size?

    I compiled duc-1.4.4, I ran:

    duc index --debug -p -d /projects/foo/.duc-index/duc.db /projects/foo
    

    It ran much longer than I expected, and if I strace I get an seemingly infinite and unchanging:

    pread64(3, "\260\27\253\5$\320\0051CY\342\371\270\352\2R\201\343\6\201=\r\262Z\35M`\0006\4W\17"..., 256, 1655162880) = 256
    

    Maybe I've hit the max DB size:

    $ ls -alh /projects/foo/.duc-index/duc.db
    -rwxrwx--- 1 130348 foo 1.8G Aug 20 20:08 /projects/foo/.duc-index/duc.db
    

    I ran strace for a few seconds and put the log in /tmp/foo.log

    $ cat /tmp/foo.log | grep pread64 | wc -l
    275003
    $ cat /tmp/foo.log | grep pread64 | sort | uniq
    pread64(3, "\260\27\253\5$\320\0051CY\342\371\270\352\2R\201\343\6\201=\r\262Z\35M`\0006\4W\17"..., 256, 1655162880) = 256
    pread64(3, strace: Process 9187 detached
    $
    

    File handle 3 above is pointing at the duc.db file:

    $ ls -al /proc/9187/fd/3
    lrwx------ 1 root root 64 Aug 21 09:37 /proc/9187/fd/3 -> /projects/foo/.duc-index/duc.db
    

    The filesystem has 4PB free, and I don't believe it's been full since I started the index.

    opened by spikebike 39
Releases(1.4.4)
  • 1.4.4(Sep 28, 2018)

    • new: added --directory/-D option to 'duc ls' to allow listing of only directory itself (#196)
    • new: 'duc ls' now handles multiple path arguments
    • new: added 'o' key to duc-ui to pass current file to xdg-open
    • new: added DPI handing for graph font size (#201)
    • new: added '-a/--apparent' option to 'duc xml' (#171)
    • fix: improved cairo and SVG graph rendering (#202)
    • cha: changed license from GPL to LGPL (#190)
    Source code(tar.gz)
    Source code(zip)
    duc-1.4.4.tar.gz(357.16 KB)
    duc-1.4.4.tar.gz.asc(195 bytes)
  • 1.4.3(Jan 2, 2017)

  • 1.4.2(Nov 20, 2016)

    • new: default per-user file path is now ~/.config/duc/ducrc
    • new: added 'classic' palette for Philesight look
    • new: added -n/--name-sort option to 'duc ui' and 'duc ls'
    • new: added --header and --footer options to 'duc cgi'
    • cha: warnings in during indexing now show full path
    • fix: fixed multiline label printing in CGI graph
    • fix: removed PATH_MAX references which broke build on GNU Hurd
    • fix: fixed line stroking for HTML drawing backend
    Source code(tar.gz)
    Source code(zip)
    duc-1.4.2.tar.gz(250.14 KB)
    duc-1.4.2.tar.gz.asc(163 bytes)
  • 1.4.1(Mar 12, 2016)

        - new: added --fs-include and --fs-exclude options
        - cha: disabled gui gradients by default. use the --gradient option
               for original graph style
        - cha: tooltip now shows actual size, apparent size and count
        - fix: once more fixed cgi parameter decoding
        - fix: fixed handling of filenames with spaces in 'duc cgi'
    
    Source code(tar.gz)
    Source code(zip)
    duc-1.4.1.tar.gz(318.05 KB)
  • 1.4.0(Feb 24, 2016)

  • 1.3.3(Jun 14, 2015)

  • 1.3.2(Jun 13, 2015)

  • 1.3(Jun 12, 2015)

    • Added a OpenGL/GLFW user interface in duc guigl, which can be used as a native UI for Mac OS.
    • Duc CGI no longer depends on cairo/pango. Good for headless servers and embedded file servers.

    Detailed changes from the previous version:

    - new: added SVG and HTML/canvas graph back ends
    - new: added OpenGL/GLFW graph back end for better portability
    - new: added tooltip to CGI, enable with --tooltip option
    - new: duc database is now portable between endianess and
           architectures for sqlite3 databases
    - new: added --ring-gap option to gui
    - new: added --color option to ui
    - cha: optimized memory usage
    - fix: fixed building on Solaris
    - fix: added better error handling in sqlite3 backend
    
    Source code(tar.gz)
    Source code(zip)
    duc-1.3.tar.gz(265.10 KB)
  • 1.2(May 11, 2015)

  • 1.1(May 9, 2015)

    • new: Added support for leveldb database backend
    • new: Some visual changes and performance improvements in duc-gui
    • new: Link to ncursesw if available for proper UTF-8 support in duc-ui
    • fix: Fixed HTML and CGI escaping for duc-cgi
    • fix: Fixed unit scaling on 'humanized' formatted numbers
    • fix: Added UTF-8 charset declaration to duc-cgi
    • fix: Fatal errors are still printed in --quiet mode
    • fix: Better handling of non-printable characters in file names
    Source code(tar.gz)
    Source code(zip)
    duc-1.1.tar.gz(365.28 KB)
Owner
Ico Doornekamp
Ico Doornekamp
Read-only mirror of https://gitlab.gnome.org/GNOME/gparted

GPARTED ======= Gparted is the GNOME Partition Editor for creating, reorganizing, and deleting disk partitions. A hard disk is usually subdivided int

GNOME Github Mirror 169 Jun 6, 2021
Create multiboot live Linux on a USB disk...

Only limited instructions are provided here. For detailed instruction please refer User guide What is multibootusb? MultiBootUSB is a cross platform*

multibootusb 1.1k Jun 4, 2021
Terminal disk space navigator 🔭

diskonaut How does it work? Given a path on your hard-drive (which could also be the root path, eg. /). diskonaut scans it and indexes its metadata to

Aram Drevekenin 925 Jun 6, 2021
TMSU lets you tags your files and then access them through a nifty virtual filesystem from any other application.

Overview TMSU is a tool for tagging your files. It provides a simple command-line utility for applying tags and a virtual filesystem to give you a tag

Paul Ruane 1.5k Jun 1, 2021
Mobile Shell

Mosh: the mobile shell Mosh is a remote terminal application that supports intermittent connectivity, allows roaming, and provides speculative local e

Mosh (mobile shell) 10k Jun 4, 2021
Source code for Gramps Genealogical program

The Gramps Project ( https://gramps-project.org ) We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete f

Gramps Project 1.2k Jun 5, 2021
Send browser notifications from your terminal. No installation. No registration.

Notica Send browser notifications from your terminal. No installation. No registration. https://notica.us/ Usage Notica is a Bash function / alias tha

Tanner Collin 232 Jun 6, 2021
Online genealogy

webtrees - online collaborative genealogy Contents License Coding styles and standards Introduction System requirements Internet browser compatibility

Greg Roach 550 Jun 7, 2021
🔥 Open source static (serverless) status page. Uses hyperfast Go & Hugo, minimal HTML/CSS/JS, customizable, outstanding browser support (IE8+), preloaded CMS, read-only API, badges & more.

Über fast, backwards compatible (IE8+), tiny, and simple status page built with Hugo. Completely free with Netlify. Comes with Netlify CMS, read-only

cState 1.3k Jun 5, 2021
Make any web page a desktop application

Nativefier You want to make a native wrapper for WhatsApp Web (or any web page). nativefier 'web.whatsapp.com' You're done. Introduction Nativefier is

null 27.2k Jun 4, 2021
BleachBit system cleaner for Windows and Linux

BleachBit BleachBit cleans files to free disk space and to maintain privacy. Running from source To run BleachBit without installation, unpack the tar

null 1.2k Jun 5, 2021
A free open source IT asset/license management system

Snipe-IT - Open Source Asset Management System This is a FOSS project for asset management in IT Operations. Knowing who has which laptop, when it was

snipe 5k Jun 3, 2021