apt-p2p-clean 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. -v, --version show version information and exit
  16. EOF
  17. exit $@
  18. }
  19. function version()
  20. {
  21. echo "$program $version"
  22. exit
  23. }
  24. program=`basename $0`
  25. version='1.0'
  26. args=`getopt -l 'execute,help,no-execute,version' -n "$program" -o 'ehnv' -- "$@"`
  27. val=$?
  28. [[ $val != 0 ]] && usage $val
  29. eval set -- "$args"
  30. unset args val
  31. until [[ "$1" == -- ]]; do
  32. case "$1" in
  33. (-e|--execute)
  34. execute=1
  35. ;;
  36. (-h|--help)
  37. usage
  38. ;;
  39. (-n|--no-execute)
  40. execute=0
  41. ;;
  42. (-v|--version)
  43. version
  44. ;;
  45. esac
  46. shift
  47. done
  48. [[ -z $execute ]] && usage
  49. set -e
  50. if [[ $execute -eq 1 ]]; then
  51. echo 'Removing files:'
  52. else
  53. echo 'Would remove files:'
  54. fi
  55. find /var/cache/apt-p2p/cache -name '*.deb' | (
  56. freed=0
  57. while read deb; do
  58. if [[ ! -f /var/cache/apt/archives/${deb##*/} ]]; then
  59. ((freed += `du -B 1 $deb | cut -f 1`))
  60. echo ${deb##*/}
  61. [[ $execute -eq 1 ]] && rm -f $deb
  62. fi
  63. done
  64. if [[ $execute -eq 1 ]]; then
  65. [[ $freed != 0 ]] && invoke-rc.d apt-p2p restart
  66. echo -n 'Freed'
  67. else
  68. echo -n 'Would free'
  69. fi
  70. echo " `bc <<-EOF
  71. freed=$freed
  72. scale=1
  73. 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
  74. EOF`B of disk space"
  75. )
  76. # Clean up Apt-P2P cache