Disk Usage Reports

Rich web-based usage reports, to help you keep things under control.

Change Log

About Version Numbers:

As of 1.0.0 the version numbers will now follow the Semantic Versioning guidelines at semver.org as closely as possible.

Releases will be numbered with the following format: <major>.<minor>.<patch>

The following are some of the rules that will be followed:

  • Breaking backwards compatibility will increase the <major>.
  • New additions that do not break backwards compatibility will increase the <minor>.
  • Bug fixes and minor changes will increase the <patch>.

2.0.1 - April 5, 2013

Bug Fixes:

  • [Minor] Fixed bug in find.sh that caused the script to fail on some systems.

2.0.0 - April 5, 2013

Major Additions/Improvements:

  • scripts/find.sh now supports more platforms (Mac OS X and other BSD variants).
  • One or more tests can now be included after <directory-to-scan> in scripts/find.sh that will be passed directly to the *NIX find command. See scripts/find.sh -h for examples.
  • scripts/find.sh and scripts/find.php have a new output format (version 2).
    • Default field delimiter changed from NULL to a space, making the output much more human readable. Use -d null to use a NULL delimiter.
    • The header includes a version number (e.g. v2), and scripts/process.php will halt if it does not support it.
    • A space is always used as the field delimiter in the header.
    • The field and directory delimiters are stored as the ASCII decimal value.
    • The header now includes settings as name/value pairs. If the value contains a space or backslash, it is escaped using a backslash.
    • The directory depth column has been removed.
    • Special characters in file names (i.e. slashes and newlines) are now escaped.

Minor Additions/Improvements:

  • scripts/find.php now warns you if you are using a 32-bit version of PHP, as this may lead to inaccurate totals if the directory you are scanning contains files over 2GB.
  • scripts/process.php now supports timestamps with milliseconds.
  • A hyphen (-) can now be used as the argument before <directory-to-scan> if the directory name conflicts with other arguments (e.g. a directory named -d) in scripts/find.sh and scripts/find.php.

Bug Fixes:

  • [Major] Removed debug code that was causing file extensions to be improperly processed. This resulted in report files being abnormally large in some cases.
  • [Minor] The -d argument in scripts/find.sh and scripts/find.php now fails if the next argument is not one character long.
  • [Minor] Null values in errors stored in settings.txt no longer cause the web UI to fail.
  • [Minor] Fixed confusing error message in the language file.
  • [Minor] Adding missing <tr> tags to index.html.
  • [Minor] Specifying either the -d or -td argument in find.sh no longer causes the script to exit immediately.

Backwards Incompatibility Warning:

The new output format used by scripts/find.sh and scripts/find.php will require updates to custom scripts that used its output.

However, scripts/process.php still accepts the old format so you will still be able to use old list files.

1.0.3 - April 25, 2012

Minor Additions/Improvements:

  • Updates to documentation and script help output.

Bug Fixes:

  • [Critical] A typo in error handling in process.php caused it to halt unexpectedly.
  • [Major] The shorthand version of HH:MM:SS in find's -printf argument would sometimes include milliseconds, causing the format check to fail.
  • [Minor] scripts/process.php was not properly respecting verbosity settings.
  • [Minor] The JavaScript files were not being packed correctly, making the total size larger than it needed to be.

1.0.2 - March 19, 2012

Bug Fixes:

  • [Minor] Scripts missing proper help output.
  • [Minor] scripts/process.php was not properly respecting verbosity settings.

1.0.0 - March 15, 2012

Major Additions/Improvements:

  • Report files can now have a suffix added to the name of files. The default is ".txt". This fixes an issue where Microsoft IIS will deny access to files with no extension.

Minor Additions/Improvements:

  • When the selected directory changes (e.g. by clicking a directory, or clicking back/forward in your browser) the directory tree will scroll into view more consistently and without cropping the directory icon.

1.0 RC3 - February 7, 2012

Major Additions/Improvements:

  • Added scripts/find.exe. This is a Windows replacement for find.php that fully supports UTF-8 characters in paths. It is also much faster than find.php. It has been tested in Windows XP/7 and Windows Server 2008. Full source code is available at https://github.com/amekkawi/diskusagereports/tree/visualstudio-solution.
  • Added shell script (find.sh) for using the linux 'find' command in a way that mimics find.php.
  • The various forms of 'find' now output a header that includes the column delimiter and directory separator that is used, removing the need to tell process.php.
  • Errors encountered during 'find' are now included in the report generated by process.php.
  • Added a -fp (full path) option to process.php, which will instruct it to allow the generated report to show the "full path" of the directory as it appeared on the scanned system. By default, this information is hidden in the final report. For example, if the directory scanned was /var/www/html the report would never show the "/var/www/" part of the path.

Minor Additions/Improvements:

  • process.php now has -v and -vv options, which display additional info while processing data.
  • find.php and process.php now use PHP4 classes.
  • process.php reports if the allowed RAM for the script to use is getting low. This should only be an issue if a lot of errors were reported by 'find'. This works in PHP 5.2.1+ or prior PHP compiled with --enable-memory-limit.
  • Improved 'skip' messages (in lang/en-us.txt) that appear when the report is still loading, to be a bit more obvious.
  • Improved CLI detection in find.php and process.php.
  • Disabled the debug timeout (but in a way so that it can be easily be re-enabled).
  • Improved detection of file type by find.php, allowing it to detect character/byte devices and fifo pipes.
  • Added .htaccess file to the scripts directory for Apache HTTPD.

Bug Fixes:

  • [Critical Bug] process.php no longer fails completely when encountering Windows-1252 paths. It now checks to see if a path is valid UTF-8, and if not, it attempts to convert it from Windows-1252 to UTF-8. Only if the conversion fail, does the script fail completely.
  • [Critical Bug] process.php failed if the data it processed started with a root directory. An example would be running find.php on "/" or "c:\".
  • [Bug] Language files now use the '.txt' extension because of problems with serving '.json' in Microsoft IIS 6+.
  • [Bug] Error count was not being updated properly.
  • [Bug] An endless recursion loop occurred when a translation could not be found.
  • [Bug] Added better error reporting if the language file fails to load.

1.0 RC2 - June 21, 2011

  • A 'packed' version of all the required JavaScript includes is now included and used by default. The original includes are still in index.html but are commented out.
  • Added support for HTTP's "Accept-Language" syntax.
  • The document title now includes the name of the directory being viewed.
  • Errors are better handled when the report is viewed via file:///
  • It is now possible to choose between multiple languages by clicking the name of the current language in the footer. However, only English (US) is included by default.
  • Upgraded jQuery to 1.6.1 and jQuery UI to 1.8.13.
  • [Bug] Top100 paths sometimes pointed to a directory deeper than the file actually resided in.
  • [Bug] History did not work correctly in older browsers (e.g. IE6, IE7). Implemented new history functionality based on Google Web Toolkit (GWT).
  • [Bug] Some older browsers would show "undefined" where translated text should appear.
  • [Bug] Fixed example in index.html for using PHP with controller.setLanguage(). It incorrectly used $_GET instead of $_SERVER.

1.0 RC1 - May 24, 2011

  • Added MIT license.
  • Added backwards compatibility that should allow process and find.php to run under PHP 4.
  • process.php now creates the <reportdir> if it does not exist.
  • Fixed critical bug in find.php that prevented it from working.
  • Added language support.
  • Added paging to tables. Added optional setting "controller.pageMax" to limit the rows per page.
  • The meaning of "<1%" in the directory tree is now more accurate.
  • Added dotted lines to the directory tree to make the structure more apparent.
  • Added "Files in this directory" to the directory tree when sorted by "Size" or "Count", giving a quick way to see the percentage.
  • Fixed sorting bug for the "Contents" tab.

Beta 1.2 - Feb 20, 2011

  • Fixed sorting bug in 'File Sizes' table.
  • Added directory tree sorting by "Name", "Size" and "Count". When sorting by "Size" or "Count" prefixes are added to directory names to show their percent of the parents size/count.
  • Reduced size of the "directory" report file by ~30%.
  • Fixed bug with UI heights not being recalculated properly after switching to a different directory.
  • Fixed bug with directory data (such as "Files Sizes" or "Contents") not changing after switching to a different directory.
  • The directory tree can now be resized by dragging the blue bar to the right of it.
  • "Top 100" now sorts by "name" in a case-insensitive manner.
  • Directories in the directory tree are now scrolled into view when selected.
  • Non-fatal errors that occurred during process.php can now be viewed in the report.
  • Added maximum tree size argument to process.php to automatically disable the directory tree if it gets too large.
  • When a report is loading, the directory list can now be skipped if it fails to load or takes too long.
  • process.php now fails when there are invalid characters in directory and file names.
  • JavaScript in index.html and viewer.js has been combined into a new "Controller" class.
  • Various overrides were added to index.html in a well-commented section.

Beta 1.1 - Feb 2, 2011

  • find.php now skips symbolic links.
  • process.php
    • Now works correctly (and faster) on 32-bit systems.
    • No longer leaks a large amount of memory in older versions of PHP.
    • Added backwards compatibility support for json_encode().

Beta 1.0 - Feb 2, 2011

  • First release