Directory Content Size
For dynamic sites that log activity in the public document area, it is prudent to occasionally get a list of directories and the total size of the files they contain. Log files may quickly get so large they need to be removed.
The Directory Content Size software (source code below) can provide a list of directories and their content size.
Directory Content Size has another use. When moving a domain to a different server, a directory list obtained from the old server can be compared to a directory list obtained from the new server. If any on the old server list are absent on the new server list, you'll know which directories still need to be moved.
Directory Content Size is PHP software. Here is the source code:
<?php /* Directory Content Size Version 1.1 January 18, 2014 Version 1.0 - April 23, 2012 Version 1.1 - January 18, 2014 - Added total file size. Will Bontrager Software LLC https://www.willmaster.com/ Copyright 2012,2014 Will Bontrager Software LLC This software is provided "AS IS," without any warranty of any kind, without even any implied warranty such as merchantability or fitness for a particular purpose. Will Bontrager Software LLC grants you a royalty free license to use or modify this software provided this notice appears on all copies. */ ?><!DOCTYPE html> <head> <title>Directory Content Size</title> <style type="text/css"> body { font-family: sans-serif; margin:50px 0 0 100px; background-color:white; } .inputwide { width:500px; } .inputfont { font-family:monospace; font-size:larger; } #content { width:500px; position:relative; } </style> </head> <body> <div style="position:absolute; left:30px; top:100px;"> <a href="//www.willmaster.com/"> <img src="//www.willmaster.com/images/wmlogo_icon.gif" border="0" width="50" height="50" alt="Willmaster.com logo - Will Bontrager Software LLC" title="The best supported website software - Will Bontrager Software LLC"> </a> </div> <div id="content"> <h2 style="margin-top:0; color:#333;">Directory Content Size</h2> <form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>"> <?php if( isset($_POST['doreporting']) ): ?> <h3>Directories –</h3> <p> Listed below are the directories with the total file sizes of the regular files they contain. </p> <pre> Size (bytes) Directory ------------ --------- <?php $TotalSize = 0; $directory = trim($_POST['directory']); if( $directory != '/' ) { $directory = preg_replace( '!/*$!', '', $directory ); } if( $directory == '' ) { $directory = preg_replace('!/[^/]*$!','',$_SERVER['PHP_SELF']); } $directory = $_SERVER['DOCUMENT_ROOT'] . '/' . preg_replace('!^/*!','',$directory); $directory = preg_replace('!/*$!','',$directory); $subdirs = (isset($_POST['subdirs']) and $_POST['subdirs'] == 1) ? true : false; $dirlist = $donedirlist = array(); $dirlist[] = $directory; $dircount = 1; while( count($dirlist) ) { $dir = array_shift($dirlist); $newdirs = glob("$dir/*"); $dirsize = 0; foreach( $newdirs as $file ) { if( is_dir($file) ) { if( $subdirs ) { $dirlist[] = $file; $dircount++; } } elseif( is_file($file) ) { $size = filesize($file); $dirsize += $size; $TotalSize += $size; } } $dir4list = preg_replace('!^\Q' . $_SERVER['DOCUMENT_ROOT'] . '\E!', '', $dir); if( empty($dir4list) ) { $dir4list = '/'; } $donedirlist[ $dir4list ] = $dirsize; } ksort($donedirlist); foreach( $donedirlist as $dir => $size ) { $sizestr = strval($size); while( strlen($sizestr) < 13 ) { $sizestr .= ' '; } echo "$sizestr $dir\n"; } $s = "$TotalSize (TOTAL)"; $ts = '-'; while( strlen($ts) < strlen($s) ) { $ts .= '-'; } echo "$ts\n$s\n"; $ts = str_replace('-','=',$ts); echo $ts; ?> </pre> <p> <?php echo($dircount); ?> director<?php echo( ($dircount==1?'y':'ies') ); ?> listed above. </p> </p> <br> <hr width="100"> <p style="margin-bottom:0;"> <a href="<?php echo($_SERVER['PHP_SELF']); ?>">[HOME]</a> </p> <?php else: ?> <p> This software will determine the total size of files within the directory you specify and, optionally, its subdirectories. </p> <p> Specify the directory: </p> <ul> <li> <p> To specify the current directory, the directory where this software is installed, leave this blank. </p> </li> <li> <p> To specify the document root directory, specify only "/" (no quotes). </p> </li> <li> <p> Otherwise, specify the directory relative to the document root. </p> </li> </ul> <p style="margin-bottom:3px;"> Directory: </p> <input type="text" class="inputwide inputfont" name="directory"> <p style="margin-top:5px;"> <input type="checkbox" style="margin:0;" name="subdirs" value="1"> And all subdirectories. </p> <div id="buttonp" style="display:none; border:1px solid black; padding:12px; font-size:14px; font-weight:bold; text-align:center;">This may take a while. ...</div> <p style="margin-top:25px;"> <input type="submit" class="inputwide" name="doreporting" value="List Directories" onclick="PublishMessage()"> </p> <script type="text/javascript"> function PublishMessage() { var d = document.getElementById("buttonp"); d.style.display = ""; } </script> <?php endif; ?> <br> <hr width="100" align="left"> <p> Copyright 2012 <a href="//www.willmaster.com/">Will Bontrager Software LLC</a> </p> </form> </div> </body> </html>
Save the above as ServerDirectories.php or other appropriate name ending with .php
Upload the ServerDirectories.php file to the server. Then, type its URL into your browser's address bar.
You'll see a page with a text field to specify the directory to scan, scanning its subdirectories being optional.
-
To specify the current directory, the directory where ServerDirectories.php is installed, leave the field blank.
-
To specify the document root directory, specify only a slash character, / (The document root is the directory where the domain's main or index page is located.)
-
Otherwise, specify the directory relative to the document root. (That would be the URL to the directory with the http and domain name removed. Example:
http://example.com/books/ is specified as /books/)
To scan the specified directory and also its subdirectories, check the "And all subdirectories" checkbox.
Click the "List Directories" button.
After the button is clicked, the Directory Content Size software will list each directory and its content size. Following the list is a count of number of directories that were scanned and the total of the content sizes.
That's all it takes. Clicking the button will scan the specified directory and, optionally, all its subdirectories. Then print the results.
Will Bontrager