,correct_disks.sh 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/bin/bash
  2. #_sudo_apt_install_
  3. #_sudo_dpkg_i_
  4. source $HOME/.SCR/lib.sh
  5. fun_log_dir_create $0 30 1
  6. fun_correct_disk_space ()
  7. {
  8. dir_path="$1" # путь до корректируемой папки
  9. norma="$2" # норма свыше которой, диск считается переполнен
  10. name_sdx="$3" # имя диска по df. Например: sda3
  11. name_disk="$4" # имя диска для сообщений. Пример: ДАТА1
  12. fun_create_directory "$dir_path"
  13. fun_echo_variable dir_path norma name_sdx name_disk
  14. fun_persent ()
  15. {
  16. percent="$(df | grep "$name_sdx" | awk '{print$5}' | sed 's/%//g')"
  17. fun_echo_stadia 11 0 "Disk $name_disk is $percent persent full"
  18. }
  19. fun_persent $name_sdx $name_disk
  20. while [ "${percent}" -gt "${norma}" ] # удаление файлов из папки
  21. do
  22. object1="$(ls -At $dir_path | tail -n1)" # find object 1 level. Example: Dr.House
  23. object1_path="$dir_path/$object1" # full path
  24. object1_date="$(stat "$object1_path" | grep "Modify" | cut -f2-4 -d" ")" # get modification date
  25. if [ -e "$object1_path" ] # if object exist
  26. then
  27. if [ -d "$object1_path" ] # if folder
  28. then
  29. if [ `ls "$object1_path" | wc -l` -eq 0 ] # if empty folder
  30. then
  31. stadia="Delete empty folder $object1_path"
  32. rm -rf "$object1_path"
  33. fun_analize_command "$stadia"
  34. else
  35. object2="$(ls -A "$object1_path" | head -n1)" # find object 2 level. Example: Season2
  36. object2_path="$object1_path/$object2" # full path
  37. object2_date="$(stat "$object2_path" | grep "Modify" | cut -f2-4 -d" ")" # get modification date
  38. if [ -d "$object2_path" ] # if folder
  39. then
  40. if [ `ls "$object2_path" | wc -l` -eq 0 ] # if empty
  41. then
  42. stadia="Delete empty subfolder $object2_path"
  43. rm -rf "$object2_path"
  44. fun_analize_command "$stadia"
  45. else
  46. object3="$(ls -A "$object2_path" | head -n1)" # find object 3 level. Example: Episode2.avi
  47. object3_path="$object2_path/$object3" # full path
  48. stadia="Delete object $object3_path"
  49. rm -rf "$object3_path"
  50. fun_analize_command "$stadia"
  51. touch -a --date="$object2_date" "$object2_path" # update modification date of object 2 level
  52. touch -m --date="$object2_date" "$object2_path"
  53. fi
  54. else
  55. stadia="Delete file $object2_path"
  56. rm -rf "$object2_path"
  57. fun_analize_command "$stadia"
  58. fi
  59. touch -a --date="$object1_date" "$object1_path" # update modification date of object 1 level
  60. touch -m --date="$object1_date" "$object1_path"
  61. fi
  62. else
  63. stadia="Delete file $object1_path"
  64. rm -rf "$object1_path"
  65. fun_analize_command "$stadia"
  66. fi
  67. echo "$(date +%y-%m-%d_%H-%M-%S_%6N) $stadia" >> "${tmp1}/${date_ymd_HMS}"
  68. voice_message="Files deleted from disk $name_disk"
  69. fi
  70. fun_persent $name_sdx $name_disk
  71. done
  72. ,speech_en.sh "$voice_message"
  73. voice_message=""
  74. }
  75. fun_correct_disk_space "$HOME/DATA1/Media1" 90 sda3 DATA1
  76. fun_correct_disk_space "$HOME/DATA2/Media2" 90 sda4 DATA2