#!/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' apt_p2p_cache='/var/cache/apt-p2p/cache' apt_archive='/var/cache/apt/archives' 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 for directory in "$apt_p2p_cache" "$apt_archive"; do if [[ ! -r "$directory" ]] || [[ ! -x "$directory" ]]; then echo "$program: $directory: Permission denied" 1>&2 exit 1 fi done if [[ $execute -eq 1 ]]; then echo 'Removing files:' else echo 'Would remove files:' fi find "$apt_p2p_cache" -name '*.deb' | ( freed=0 while read deb; do if [[ ! -f "$apt_archive/${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