barjac

cache_clean

Jun 14th, 2010
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.43 KB | None | 0 0
  1. #!/bin/bash
  2. # cache_clean
  3. # Save in /usr/local/bin and chmod 755 /usr/local/bin/cache_clean
  4. # This script deletes all old duplicate rpms from an rpm cache.
  5. # Run as root (su) :-
  6. # cache_clean
  7. ###############################################################################
  8. # CONFIGURATION :- Edit as needed
  9. # Location of rpm cache to clean
  10. scan_folder=/var/cache/urpmi/rpms
  11. # Number of versions to be kept in the cache (e.g. 2 = latest and one previous.)
  12. VERSIONS_TO_KEEP=2      
  13. ###############################################################################
  14. # Log file cleared at each run
  15. pathtolog=/home/"$USER"/cache_clean.log
  16.  
  17. cacheclean()
  18. {
  19. scan_folder=$1
  20. dupe=0
  21. last_non_ver_name=
  22. echo $(date) > $pathtolog
  23. echo "Checking cache for old packages. Please wait..."
  24. file_array=($(ls --sort version -r $scan_folder |grep ".rpm" |tr '\n' ' '))
  25. for full_name in ${file_array[@]};do
  26. non_ver_name=$( rpm -qp --queryformat %{Name} $scan_folder"/"$full_name )
  27. if [ "$last_non_ver_name" == "$non_ver_name" ];then
  28.    let dupe=$dupe+1
  29.       if [ "$dupe" -ge "$VERSIONS_TO_KEEP" ];then
  30.          rm $scan_folder"/"$full_name -f
  31.          echo "Deleted  "$full_name | tee -a $pathtolog
  32.       else
  33.          echo "Keeping  "$full_name | tee -a $pathtolog                      
  34.       fi
  35. else
  36. dupe=0
  37. echo "Keeping  "$full_name | tee -a $pathtolog
  38. fi
  39. last_non_ver_name=$non_ver_name
  40. done
  41. }
  42.  
  43. cacheclean $scan_folder
  44.  
  45. # End of cache_clean
Add Comment
Please, Sign In to add comment