,backup_data.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #!/bin/bash
  2. # Coding: utf-8
  3. # Editor: www.geany.org
  4. # Created 2019-02-20
  5. #_sudo_apt_install_ tar gpg split
  6. # cat xa* > join && gpg -o tar -d join && tar -xvf tar
  7. source $HOME/.SCR/lib.sh
  8. fun_log_dir_create $0 365
  9. read key_name < "$HOME/.ssh/key_name"
  10. read last_year_backup < "$dir_general/last_year_backup"
  11. full_dir_exist="false"
  12. output_data1="$HOME/DATA2/backup_data1"
  13. output_data2="$HOME/Desktop/backup_data2"
  14. year_before="$(date +%Y -d '1 year ago')"
  15. fun_backup ()
  16. {
  17. input="$1"
  18. dir_name="$( basename $1 )" # узнаем имя папки
  19. hash_file="$dir_script/$dir_name.hash"
  20. output_full="$2/${dir_name}_${date_ymd_HMS}"
  21. hash_now="$( find "$1" -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum | cut -f1 -d " " )" # хэш папки
  22. if [ ! -f "$hash_file" ] # если файл отсутствует, создаем его
  23. then
  24. touch "$hash_file"
  25. fun_analize_command "Create new hash file $hash_file"
  26. fi
  27. hash_old="$( cat "$hash_file" )" # старый хэш папки
  28. fun_echo_variable dir_script key_name input dir_name hash_file output_full hash_now hash_old full_dir_exist
  29. if [ "${hash_now}" != "${hash_old}" ] # если хэши не равны
  30. then
  31. fun_create_directory $output_full
  32. cd $output_full
  33. fun_analize_command "Change directory $output_full"
  34. tar -czp "$input" | gpg -e -r "$key_name" | split -b 1000m --additional-suffix="_${dir_name}_${date_ymd_HMS}"
  35. fun_analize_command "Archivation, encrypt and split archive"
  36. find "$input" -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum | cut -f1 -d " " > "$dir_script/$dir_name.hash"
  37. fun_analize_command "Write folder hash in $dir_name.hash"
  38. full_dir_exist="true"
  39. else
  40. fun_echo_stadia 11 0 "Files in $input folder not changed"
  41. fi
  42. fun_echo_variable full_dir_exist
  43. }
  44. count_files="$(find $output_data1 -type d -name "2*" | wc -l)" # get var how many backups
  45. if (( $count_files != 0 )) # if folder consist old backup
  46. then
  47. fun_echo_stadia 11 0 "In $output_data1 folder is found $count_files old backup:"
  48. echo ""
  49. find $output_data1 -type d -name "2*"
  50. echo ""
  51. fun_echo_stadia 11 0 "Do you want delete old backup in $output_data1 ? (y/n)"
  52. read num_choice
  53. case "$num_choice" in
  54. "y" ) find $output_data1 -type d -name "2*" | xargs rm -rf
  55. fun_analize_command "Old backup in $output_data1 deleted" ;;
  56. * ) fun_echo_stadia 11 0 "Delete cancelled" ;;
  57. esac
  58. fi
  59. if [ "$(date '+%Y')" -ne "$last_year_backup" ]
  60. then
  61. output_data1="$HOME/DATA2/backup_data1/year_$year_before"
  62. else
  63. output_data1="$HOME/DATA2/backup_data1/${date_ymd_HMS}"
  64. fi
  65. fun_create_directory "$output_data1"
  66. fun_backup "$HOME/backup/cloud_diff/" "$output_data1"
  67. fun_backup "$HOME/backup/home/" "$output_data1"
  68. fun_backup "$HOME/backup/tablet/" "$output_data1"
  69. fun_backup "$HOME/backup/tvbox/" "$output_data1"
  70. fun_backup "$HOME/backup/smart/" "$output_data1"
  71. echo ""
  72. fun_echo_stadia 11 0 "Please copy $output_data1 folder in backup_data1 on Cloud"
  73. echo ""
  74. fun_for_continue_enter_password
  75. fun_create_directory "$output_data2"
  76. fun_backup "$HOME/Images/.x/" "$output_data2"
  77. fun_backup "$HOME/Images/Camera_2004" "$output_data2"
  78. fun_backup "$HOME/Images/Camera_2023" "$output_data2"
  79. fun_backup "$HOME/Images/My_photo_1940/" "$output_data2"
  80. fun_backup "$HOME/Images/My_photo_2008/" "$output_data2"
  81. fun_backup "$HOME/Images/My_photo_2013/" "$output_data2"
  82. fun_backup "$HOME/Images/My_photo_2017/" "$output_data2"
  83. fun_backup "$HOME/Images/Screenshots_2016/" "$output_data2"
  84. fun_backup "$HOME/cloud/Aday/" "$output_data2"
  85. fun_backup "$HOME/cloud/Maria/" "$output_data2"
  86. if [ "$full_dir_exist" == "true" ] # если есть не пустые папки
  87. then
  88. echo ""
  89. fun_echo_stadia 11 0 "Please copy $output_data2 folder in backup_data2 on Cloud"
  90. echo ""
  91. fun_for_continue_enter_password
  92. else
  93. fun_echo_stadia 11 0 "$output_data2 folder is empty"
  94. fi
  95. rm -rf "$output_data2"
  96. fun_analize_command "Delete $output_data2 folder"