Overview
Use Linux DU to batch check and sort folder sizes in Linux.
You can also use Linux DU command on a Windows share or a NAS CIFS/NFS share.
Our users Home directories are placed in /u/
We then have groups for different users like “admins”,”students”: /u/students/USERNAME
I needed a script that creates a Text file with a Size sorted list of folders so I can check for Quota oversize.
NetAPP sort is not comfortable enough to use as it sorts by the first letter and not by actual size.
For example: NetAPP sort – 200,20,2,100,10,1 vs Needed sort 200,100,20,10,2,1.
So I have mounted the NFS share exported by the NetAPP and I use Linux DU command to scan and sort folders:
#!/bin/bash
echo "Getting Quota Sizes"
workdir=/scripts
logfile=$workdir/size.log
rm -rf $logfile
for group in `ls /u/`;
do
for i in `ls /u/$group/`;
do
if [ $i != "Expired" -a $i != "MOVED" -a $i != ".snapshot" ] ;
then
echo "Getting $group/$i Folder Size"
echo
du -s /u/$group/$i/ >> $logfile
fi
done
done
echo "Sorting Results"
sort -k1 -n -r $logfile >> $logfile.txt
rm -rf $logfile
echo "Done !!"
Linux DU Command Switches
Usage: du [OPTION]... [FILE]...
or: du [OPTION]... --files0-from=F
Summarize disk usage of each FILE, recursively for directories.
Mandatory arguments to long options are mandatory for short options too.
-a, --all write counts for all files, not just directories
--apparent-size print apparent sizes, rather than disk usage; although
the apparent size is usually smaller, it may be
larger due to holes in (`sparse') files, internal
fragmentation, indirect blocks, and the like
-B, --block-size=SIZE use SIZE-byte blocks
-b, --bytes equivalent to `--apparent-size --block-size=1'
-c, --total produce a grand total
-D, --dereference-args dereference only symlinks that are listed on the
command line
--files0-from=F summarize disk usage of the NUL-terminated file
names specified in file F;
If F is - then read names from standard input
-H equivalent to --dereference-args (-D)
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
--si like -h, but use powers of 1000 not 1024
-k like --block-size=1K
-l, --count-links count sizes many times if hard linked
-m like --block-size=1M
-L, --dereference dereference all symbolic links
-P, --no-dereference don't follow any symbolic links (this is the default)
-0, --null end each output line with 0 byte rather than newline
-S, --separate-dirs do not include size of subdirectories
-s, --summarize display only a total for each argument
-x, --one-file-system skip directories on different file systems
-X, --exclude-from=FILE exclude files that match any pattern in FILE
--exclude=PATTERN exclude files that match PATTERN
--max-depth=N print the total for a directory (or file, with --all)
only if it is N or fewer levels below the command
line argument; --max-depth=0 is the same as
--summarize
--time show time of the last modification of any file in the
directory, or any of its subdirectories
--time=WORD show time as WORD instead of modification time:
atime, access, use, ctime or status
--time-style=STYLE show times using style STYLE:
full-iso, long-iso, iso, +FORMAT
FORMAT is interpreted like `date'
--help display this help and exit
--version output version information and exit
Display values are in units of the first available SIZE from --block-size,
and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).
SIZE may be (or may be an integer optionally followed by) one of following:
KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
Report du bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
For complete documentation, run: info coreutils 'du invocation'
All done.
DevOps/IT Specialist, Musician.
IT Manager – Faculty of Exact Sciences, Bar-Ilan University
Personal Website