tmpcleaner

Smart Temp Cleaner


License
BSD-3-Clause
Install
pip install tmpcleaner==1.0

Documentation

Tmpcleaner

Tmpcleaner is simply advanced temp cleaner with statistical capabilities. It passes given structure only once, groups directories/files by given definition, applies different cleanup rules by each group and print final statistics.

Installation

Tmpcleaner is compatible and tested with Python 2.6.6 and newer.

You can install it with PIP from Pypi:

pip install tmpcleaner

Or directly from Github:

pip install -e 'git://github.com/gooddata/tmpcleaner.git#egg=tmpcleaner'

Or from local GIT checkout:

make install

Then you can run it by tmpcleaner.py script that is installed within package.

Usage

Let's assume you have /tmp/app directory with some special huge structure, maybe on shared network filesystem where each operation is expensive. Now you want to clean it up and gather some statistics.

Configuration

Configuration file should be simple YAML file.

Global options

Parameter Description
pidfile path to PID file, if empty, then PID won't be saved
path path to pass
pathIgnore regular expression for path to ignore, eg. '.*/\.snapshot$' to ignore directories named .snapshot

Definition options

Parameter Description
name friendly name for classification (otherwise id will be used
pathMatch regular expression for path to match
pathExclude regular expression for path to exclude
filesOnly ignore directories
noRemove don't remove files/directories, only gather statistics
atime filter by access time (hour)
mtime Filter by modification time (hour)
ctime filter by status change time (hour)

Example

---
pidfile:    /var/run/tmpcleaner.pid
path:       /tmp/app
pathIgnore: '.*/\.snapshot(/.*|$)'

definitions:
    - # Always remove files named test when found
        name: test
        pathMatch: '.*/test$'
    - # Cleanup files that weren't modified for more than 1 day
        name: users
        pathMatch: '/tmp/app/users/.*'
        mtime: 24
    - # Never cleanup project directories, print just statistics
        name: projects
        pathMatch: '/tmp/app/projects/.*'
        noRemove: true

Execution

Execute simply by running

tmpcleaner.py /etc/tmpcleaner.yaml

Output will look like this, sizes are in bytes:

WARNING: Passing /tmp/app
WARNING: Summary: path=/tmp/app definition=temp removed_files=3 removed_dirs=0 removed_size=102400 existing_files=0 existing_dirs=0 existing_size=0
WARNING: Summary: path=/tmp/app definition=users removed_files=24 removed_dirs=4 removed_size=104857  existing_files=102 existing_dirs=1057 existing_size=1048576
WARNING: Summary: path=/tmp/app definition=projects removed_files=0 removed_dirs=0 removed_size=0 existing_files=52 existing_dirs=5 existing_size=16894
WARNING: Summary totals: path=/tmp/app time=27 time_pass=0 time_remove=0 removed_files=27 removed_dirs=4 removed_size=207257 existing_files=154 existing_dirs=1062 existing_size=1065470

Conclusion

Now you should know how to simply setup and use Tmpcleaner.

Enjoy and feel free to contribute!