apt-p2p-clean 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env bash
  2. # APT P2P Clean
  3. #
  4. # Douglas Thrift
  5. #
  6. # $Id$
  7. function usage()
  8. {
  9. cat <<-EOF
  10. Usage: $program [options]
  11. Options:
  12. -e, --execute clean up the apt-p2p cache
  13. -h, --help show this help message and exit
  14. -n, --no-execute show what would be done to clean up the apt-p2p cache
  15. EOF
  16. exit $@
  17. }
  18. program=`basename $0`
  19. args=`getopt -l 'execute,help,no-execute' -n "$program" -o 'ehn' -- "$@"`
  20. val=$?
  21. [[ $val != 0 ]] && usage $val
  22. eval set -- "$args"
  23. unset args val
  24. until [[ "$1" == -- ]]; do
  25. case "$1" in
  26. (-e|--execute)
  27. execute=1
  28. ;;
  29. (-h|--help)
  30. usage
  31. ;;
  32. (-n|--no-execute)
  33. execute=0
  34. ;;
  35. esac
  36. shift
  37. done
  38. [[ -z $execute ]] && usage
  39. set -e
  40. if [[ $execute -eq 1 ]]; then
  41. echo 'Removing files:'
  42. else
  43. echo 'Would remove files:'
  44. fi
  45. find /var/cache/apt-p2p/cache -name '*.deb' | (
  46. freed=0
  47. while read deb; do
  48. if [[ ! -f /var/cache/apt/archives/${deb##*/} ]]; then
  49. ((freed += `du -B 1 $deb | cut -f 1`))
  50. echo ${deb##*/}
  51. [[ $execute -eq 1 ]] && rm -f $deb
  52. fi
  53. done
  54. if [[ $execute -eq 1 ]]; then
  55. [[ $freed != 0 ]] && invoke-rc.d apt-p2p restart
  56. echo -n 'Freed'
  57. else
  58. echo -n 'Would free'
  59. fi
  60. echo " `bc <<-EOF
  61. freed=$freed
  62. scale=1
  63. 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
  64. EOF`B of disk space"
  65. )