diff --git a/Script/backup b/Script/backup index a8cf6aa..fd982b8 100644 --- a/Script/backup +++ b/Script/backup @@ -61,9 +61,16 @@ backup_delete_old_files_by_date() } mkalias_with_prefix 'backup_delete_old_files_by_date' +backup_date_week() +{ + echo "$(date +%Vv)" +} +mkalias_with_prefix 'backup_date_week' + backup_date_day() { - echo "$(date +%Yy_%mm_%dd-%Vv)" + week=$(backup_date_week) + echo "$(date +%Yy_%mm_%dd)-${week}" } mkalias_with_prefix 'backup_date_day' @@ -89,7 +96,7 @@ backup_firefox() file_add_name="mozilla_backup" file_pref="${backup_dir}/$(hostname)_${user}_${file_add_name}_" - [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + compgen -G "${file_pref}$(backup_date_day)*" && printf "Сегодня уже делался бэкап\n" && return file="${file_pref}$(backup_date).tgz" @@ -138,7 +145,7 @@ backup_home() file_add_name="home_backup" file_pref="${backup_dir}/$(hostname)_${file_add_name}_" - [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + compgen -G "${file_pref}*$(backup_date_week)*" && printf "На этой неделе уже делался бэкап\n" && return file="${file_pref}$(backup_date).tgz" sudo tar cvpzf "${file}" \ @@ -157,13 +164,14 @@ backup_etc() file_add_name="sys_etc_backup" file_pref="${backup_dir}/$(hostname)_${file_add_name}_" - [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + compgen -G "${file_pref}$(backup_date_day)*" && printf "Сегодня уже делался бэкап\n" && return file="${file_pref}$(backup_date).tgz" sudo tar cvpzf "${file}" \ /etc echo "${file}" + echo "Проверка на '${file_pref}$(backup_date_day)*'" } mkalias_with_prefix 'backup_etc' @@ -191,7 +199,7 @@ backup_sys() file_add_name="sysbackup" file_pref="${backup_dir}/$(hostname)_${file_add_name}_" - [ -f "${file_pref}$(backup_date_day)*" ] && printf "Сегодня уже делался бэкап\n" && return + compgen -G "${file_pref}*$(backup_date_week)*" && printf "На этой неделе уже делался бэкап\n" && return file="${file_pref}$(backup_date).tgz" @@ -216,7 +224,7 @@ backup_firefox_and_del_old_files() mkdir "${backup_ff_dir}" backup_firefox "${backup_ff_dir}" - backup_delete_old_files_by_date "${backup_ff_dir}" "_mozilla_backup_@DATE\.tgz" 3 3 3 week + backup_delete_old_files_by_date "${backup_ff_dir}" "_mozilla_backup_@DATE\.tgz" 3 2 2 week } mkalias_with_prefix 'backup_firefox_and_del_old_files' @@ -251,3 +259,40 @@ backup_sys_and_del_old_files() backup_delete_old_files_by_date "${backup_sys_dir}" "_sys_etc_backup_@DATE\.tgz" 3 3 3 } mkalias_with_prefix 'backup_sys_and_del_old_files' + +backup_crontab_firefox() +{ + eval $(mkvar 'backup_dir|$1|$(pwd)') + eval $(mkvar 'user|$2|$(whoami)') + sudo_="" + [[ "$user" != "$(whoami)" ]] && sudo_="sudo" + cmd="0 * * * * source /home/$(whoami)/.bashrc && backup_firefox_and_del_old_files '${backup_dir}' $user" + echo "Будет установлена команда '${cmd}' с правами ${sudo_}" + ask_continue && return + crontab_add "${cmd}" ${sudo_} +} +mkalias_with_prefix 'backup_crontab_firefox' + +backup_crontab_home() +{ + eval $(mkvar 'backup_dir|$1|$(pwd)') + eval $(mkvar 'user|$2|$(whoami)') + sudo_="sudo" + cmd="0 * * * * source /home/$(whoami)/.bashrc && backup_home_and_del_old_files '${backup_dir}'" + echo "Будет установлена команда '${cmd}' с правами ${sudo_}" + ask_continue && return + crontab_add "${cmd}" ${sudo_} +} +mkalias_with_prefix 'backup_crontab_home' + +backup_crontab_etc() +{ + eval $(mkvar 'backup_dir|$1|$(pwd)') + eval $(mkvar 'user|$2|$(whoami)') + sudo_="sudo" + cmd="0 * * * * source /home/$(whoami)/.bashrc && backup_sys_and_del_old_files '${backup_dir}'" + echo "Будет установлена команда '${cmd}' с правами ${sudo_}" + ask_continue && return + crontab_add "${cmd}" ${sudo_} +} +mkalias_with_prefix 'backup_crontab_home' diff --git a/Script/common b/Script/common index c5dc150..27230ab 100644 --- a/Script/common +++ b/Script/common @@ -30,7 +30,7 @@ mkvar() if [ "${string_to_print_before_return}" == "" ]; then echo "$var_name=$val; [[ \"\${$var_name}\" == \"\" ]] && $var_name=$def_val;" else - echo "$var_name=$val; [[ \"\${$var_name}\" == \"\" ]] && printf(\"${string_to_print_before_return}\\n\") && return;" + echo "$var_name=$val; [[ \"\${$var_name}\" == \"\" ]] && printf \"${string_to_print_before_return}\\n\" && return;" fi } diff --git a/Script/crontab b/Script/crontab index 87d4f76..14e4089 100644 --- a/Script/crontab +++ b/Script/crontab @@ -55,13 +55,13 @@ MAILTO=email@example.com 0 7 1-7 * 1 /path/to/script.sh -Запускать сценарий в 21:15, 1 и 15 числа каждого месяца: + @yearly (или @annually) - запускать задание один раз в год в полночь (12:00) 1 января. Эквивалент 0 0 1 1 *. + @monthly - запускать заданное задание один раз в месяц в полночь первого дня месяца. Эквивалент 0 0 1 * *. + @weekly - запускать задание раз в неделю в полночь воскресенья. Эквивалент 0 0 * * 0. + @daily - запускать задание один раз в день в полночь. Эквивалент 0 0 * * *. + @hourly - запускать заданную задачу один раз в час в начале часа. Эквивалент 0 * * * *. + @reboot - Запустить указанное задание при запуске системы (время загрузки). -15 9 1,15 * * /path/to/script.sh - -Запускать при старте ситемы: - -@reboot /path/to/script.sh ' cmd="$1" sudo_=$2