#!/usr/bin/env bash # Apt-P2P Clean # # Douglas Thrift # # $Id$ function usage() { cat <<-EOF Usage: $program [options] Options: -e, --execute clean up the apt-p2p cache -h, --help show this help message and exit -n, --no-execute show what would be done to clean up the apt-p2p cache -v, --version show version information and exit EOF exit $@ } function version() { echo "$program $version" exit } program=`basename $0` version='1.0' args=`getopt -l 'execute,help,no-execute,version' -n "$program" -o 'ehnv' -- "$@"` val=$? [[ $val != 0 ]] && usage $val eval set -- "$args" unset args val until [[ "$1" == -- ]]; do case "$1" in (-e|--execute) execute=1 ;; (-h|--help) usage ;; (-n|--no-execute) execute=0 ;; (-v|--version) version ;; esac shift done [[ -z $execute ]] && usage set -e if [[ $execute -eq 1 ]]; then echo 'Removing files:' else echo 'Would remove files:' fi find /var/cache/apt-p2p/cache -name '*.deb' | ( freed=0 while read deb; do if [[ ! -f /var/cache/apt/archives/${deb##*/} ]]; then ((freed += `du -B 1 $deb | cut -f 1`)) echo ${deb##*/} [[ $execute -eq 1 ]] && rm -f $deb fi done if [[ $execute -eq 1 ]]; then [[ $freed != 0 ]] && invoke-rc.d apt-p2p restart echo -n 'Freed' else echo -n 'Would free' fi echo " `bc <<-EOF freed=$freed scale=1 if (freed >= 1024 ^ 3) print freed / 1024 ^ 3, "G" else if (freed >= 1024 ^ 2) print freed / 1024 ^ 2, "M" else if (freed >= 1024) print freed / 1024, "K" else freed EOF`B of disk space" ) # Clean up Apt-P2P cache