Pwalk utility
It was originally written by John Dey to work as a parallelized version of the 'du -a' unix utility which would be suitable for scanning filesystems with 100s of millions of files. It was then reworked at OSNEXUS to support backups, sliding window backups, additional output formats, etc. If you type 'pwalk' by itself at the QuantaStor ssh or console window you'll see the following usage page / documentation. The pwalk utility has three modes, 'walk' which does a parallelized crawl of a directory, 'copy' which does a backup from a SOURCEDIR to a specified --targetdir, and 'purge' mode which removes files in the PURGEDIR which are not found in the --comparedir. In general you would never need to use pwalk directly but the documentation is provided here to support special use cases like custom backup or replication cron jobs.
pwalk version 3.1 Oct 22nd 2013 - John F Dey john@fuzzdog.com, OSNEXUS, eng@osnexus.com
Usage :
pwalk --help --version
Common Args :
--dryrun : use this to test commands
without making any changes to the system
--maxthreads=N : indicates the number of threads (default=32)
--nototals : disables printing of totals after the scan
--dots : prints a dot and total every 1000 files scanned.
--quiet : no chatter, speeds up the scan.
--nosnap : Ignore directories with name .snapshot
--debug : Verbose debug spam
Output Format : CSV
Fields : DateStamp,"inode","filename","fileExtension","UID",
"GID","st_size","st_blocks","st_mode","atime",
"mtime","ctime","File Count","Directory Size"
Walk Usage :
pwalk SOURCEDIR
Command Args :
SOURCEDIR : Fully qualified path to the directory to walk
Copy/Backup Usage :
pwalk --targetdir=TARGETDIR SOURCEDIR
pwalk --retain=30 --targetdir=TARGETDIR SOURCEDIR
Command Args :
--targetdir : copy files to specified TARGETDIR
--atime : copy if access time change (default=no atime)
--backuplog=LOGFILE : log all files that were copied.
--status=STATUSFILE : write periodic status updates to specified file
--retain : copy if file ctime or mtime within retention period
specified in days. eg: --retain=60
--nomtime : ignore mtime (default=use mtime)
SOURCEDIR : Fully qualified path to the directory to walk
Delete/Purge Usage :
pwalk --purge [--force] --comparedir=COMPAREDIR PURGEDIR
pwalk --purge [--force] --retain=N PURGEDIR
Command Args :
--comparedir : compare against this dir but dont touch any files
in it. comparedir is usually the SOURCEDIR from
a prior copy/sync stage.
--purge : !!WARNING!! this deletes files older than the
retain period -OR- if retain is not specified
--comparedir is required. The comparedir is
compared against the specified dir and any files
not found in the comparedir are purged.
--force : !NOTE! default is a *dry-run* for purge, you must
specify --force option to actually purge files
--atime : keep if access time within retain period
--retain : keep if file ctime or mtime within retention period
specified in days. eg: --retain=60
OSNEXUS modified version of the C source code for pwalk is available here pwalk.c. The original version is available here.