123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #!/bin/bash
- # Coding: utf-8
- # Editor: www.geany.org
- # Created 2019-02-20
- #_sudo_apt_install_ tar gpg split
- # cat xa* > join && gpg -o tar -d join && tar -xvf tar
- source $HOME/.SCR/lib.sh
- fun_log_dir_create $0 365
- read key_name < "$HOME/.ssh/key_name"
- read last_year_backup < "$dir_general/last_year_backup"
- full_dir_exist="false"
- output_data1="$HOME/DATA2/backup_data1"
- output_data2="$HOME/Desktop/backup_data2"
- year_before="$(date +%Y -d '1 year ago')"
- fun_backup ()
- {
- input="$1"
- dir_name="$( basename $1 )" # узнаем имя папки
- hash_file="$dir_script/$dir_name.hash"
- output_full="$2/${dir_name}_${date_ymd_HMS}"
- hash_now="$( find "$1" -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum | cut -f1 -d " " )" # хэш папки
- if [ ! -f "$hash_file" ] # если файл отсутствует, создаем его
- then
- touch "$hash_file"
- fun_analize_command "Create new hash file $hash_file"
- fi
- hash_old="$( cat "$hash_file" )" # старый хэш папки
- fun_echo_variable dir_script key_name input dir_name hash_file output_full hash_now hash_old full_dir_exist
- if [ "${hash_now}" != "${hash_old}" ] # если хэши не равны
- then
- fun_create_directory $output_full
- cd $output_full
- fun_analize_command "Change directory $output_full"
- tar -czp "$input" | gpg -e -r "$key_name" | split -b 1000m --additional-suffix="_${dir_name}_${date_ymd_HMS}"
- fun_analize_command "Archivation, encrypt and split archive"
- find "$input" -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum | cut -f1 -d " " > "$dir_script/$dir_name.hash"
- fun_analize_command "Write folder hash in $dir_name.hash"
- full_dir_exist="true"
- else
- fun_echo_stadia 11 0 "Files in $input folder not changed"
- fi
- fun_echo_variable full_dir_exist
- }
- count_files="$(find $output_data1 -type d -name "2*" | wc -l)" # get var how many backups
- if (( $count_files != 0 )) # if folder consist old backup
- then
- fun_echo_stadia 11 0 "In $output_data1 folder is found $count_files old backup:"
- echo ""
- find $output_data1 -type d -name "2*"
- echo ""
- fun_echo_stadia 11 0 "Do you want delete old backup in $output_data1 ? (y/n)"
- read num_choice
- case "$num_choice" in
- "y" ) find $output_data1 -type d -name "2*" | xargs rm -rf
- fun_analize_command "Old backup in $output_data1 deleted" ;;
- * ) fun_echo_stadia 11 0 "Delete cancelled" ;;
- esac
- fi
- if [ "$(date '+%Y')" -ne "$last_year_backup" ]
- then
- output_data1="$HOME/DATA2/backup_data1/year_$year_before"
- else
- output_data1="$HOME/DATA2/backup_data1/${date_ymd_HMS}"
- fi
- fun_create_directory "$output_data1"
- fun_backup "$HOME/backup/cloud_diff/" "$output_data1"
- fun_backup "$HOME/backup/home/" "$output_data1"
- fun_backup "$HOME/backup/tablet/" "$output_data1"
- fun_backup "$HOME/backup/tvbox/" "$output_data1"
- fun_backup "$HOME/backup/smart/" "$output_data1"
- echo ""
- fun_echo_stadia 11 0 "Please copy $output_data1 folder in backup_data1 on Cloud"
- echo ""
- fun_for_continue_enter_password
- fun_create_directory "$output_data2"
- fun_backup "$HOME/Images/.x/" "$output_data2"
- fun_backup "$HOME/Images/Camera_2004" "$output_data2"
- fun_backup "$HOME/Images/Camera_2023" "$output_data2"
- fun_backup "$HOME/Images/My_photo_1940/" "$output_data2"
- fun_backup "$HOME/Images/My_photo_2008/" "$output_data2"
- fun_backup "$HOME/Images/My_photo_2013/" "$output_data2"
- fun_backup "$HOME/Images/My_photo_2017/" "$output_data2"
- fun_backup "$HOME/Images/Screenshots_2016/" "$output_data2"
- fun_backup "$HOME/cloud/Aday/" "$output_data2"
- fun_backup "$HOME/cloud/Maria/" "$output_data2"
- if [ "$full_dir_exist" == "true" ] # если есть не пустые папки
- then
- echo ""
- fun_echo_stadia 11 0 "Please copy $output_data2 folder in backup_data2 on Cloud"
- echo ""
- fun_for_continue_enter_password
- else
- fun_echo_stadia 11 0 "$output_data2 folder is empty"
- fi
- rm -rf "$output_data2"
- fun_analize_command "Delete $output_data2 folder"
|