You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.6 KiB
131 lines
4.6 KiB
#!/bin/bash |
|
|
|
[ "${alias_dir}" = "" ] && alias_dir=$(pwd) |
|
source "${alias_dir}/common" |
|
|
|
backup_restore() |
|
{ |
|
in_file=$1 |
|
in_dir=$1 |
|
[ "$in_file" = '' || "$in_dir" = '' ] && printf "Укажите файл для распаковки и директурию, куда распаковывать, например 'backup_restore backup.tgz /home'\n" && return |
|
printf "Произойдёт распаковка файла '$in_file' в папку '$in_dir'\n" |
|
ask_continue && return |
|
sudo tar xvpzf "$in_file" -C "$in_dir" |
|
} |
|
mkalias_with_prefix 'backup_restore' |
|
|
|
backup_delete_old_files_by_regex() |
|
{ |
|
backup_dir=$1 |
|
file_regex=$2 |
|
file_max_count=$3 |
|
filter=$4 |
|
|
|
file_max_count=$((file_max_count+1)) # tail не так работает |
|
find "${backup_dir}" -regextype posix-extended -regex ".*${file_regex}" | grep -Ev "${filter}" | sort -r | tail -n +${file_max_count} | xargs -d '\n' rm -f |
|
} |
|
mkalias_with_prefix 'backup_delete_old_files_by_regex' |
|
|
|
# | grep -Ev "01d" |
|
# cur_date=$(date +%Yy_%mm_%dd) |
|
# '.*([^1])-zakonvremeni_backup.tar' |
|
# '.*1-zakonvremeni_backup.tar' |
|
|
|
backup_delete_old_files_by_date() |
|
{ |
|
backup_dir=$1 |
|
file_name_template=$2 |
|
[[ "$backup_dir" == '' || "$file_name_template" == '' ]] && printf "Укажите имя папки и шаблон имени, например 'delete_old_backup_files_by_date backup/ host_name_@DATE.zip 3 4 5'. '@DATE' - означает дату в формате 'date +%%Yy_%%mm_%%dd', 3 - максимальное количество файлов сохраняемых ежедневно, 4 - ежемесячно, 5 - ежегодно\n" && return |
|
file_max_count_every_day=$3 |
|
file_max_count_every_month=$4 |
|
file_max_count_every_year=$5 |
|
|
|
[[ "$file_max_count_every_day" == '' ]] && file_max_count_every_day=2 |
|
[[ "$file_max_count_every_month" == '' ]] && file_max_count_every_month=2 |
|
[[ "$file_max_count_every_year" == '' ]] && file_max_count_every_year=2 |
|
|
|
backup_delete_old_files_by_regex "${backup_dir}" "${file_name_template//'@DATE'/'.*'}" "${file_max_count_every_day}" 'm_01d|y_03m_01d' |
|
backup_delete_old_files_by_regex "${backup_dir}" "${file_name_template//'@DATE'/'.*m_01d'}" "${file_max_count_every_month}" 'y_03m_01d' |
|
backup_delete_old_files_by_regex "${backup_dir}" "${file_name_template//'@DATE'/'.*y_03m_01d'}" "${file_max_count_every_year}" '________NOTHONG___________' |
|
|
|
# test |
|
# for (( y = 2001; y < 2010; y++ )) do for (( m = 1; m < 10; m++ )) do for (( d = 1; d < 10; d++ )) do touch "backup_${y}y_0${m}m_0${d}d.zip"; backup_delete_old_files_by_date ./ "backup_@DATE\.zip" 2 2 2; sleep 0.15; done; done; done; |
|
} |
|
mkalias_with_prefix 'backup_delete_old_files_by_date' |
|
|
|
backup_firefox() |
|
{ |
|
backup_dir=$1 |
|
[ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return |
|
#ask_continue && return |
|
cd ~ |
|
file="${backup_dir}/$(hostname)_mozilla_backup_$(date +%Yy_%mm_%dd-%Hh_%Mm_%Ss).tgz" |
|
tar cvpzf "${file}" \ |
|
--exclude=.mozilla/firefox/*.*/Cache \ |
|
.mozilla |
|
#--exclude=.mozilla/firefox/*.*/storage |
|
echo "${file}" |
|
} |
|
mkalias_with_prefix 'backup_firefox' |
|
|
|
backup_home() |
|
{ |
|
backup_dir=$1 |
|
[ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return |
|
#ask_continue && return |
|
|
|
cd /home |
|
file="${backup_dir}/$(hostname)_home_backup_$(date +%Yy_%mm_%dd-%Hh_%Mm_%Ss).tgz" |
|
sudo tar cvpzf "${file}" \ |
|
--exclude=*home_backup*.tgz \ |
|
--exclude=*/Загрузки/* \ |
|
--exclude=*/Backup/* \ |
|
--exclude=*/Музыка/* \ |
|
--exclude=MyProgs \ |
|
--exclude=media \ |
|
--exclude=private \ |
|
--exclude=.thumbnails \ |
|
--exclude=.mozilla/firefox/*.*/Cache \ |
|
--exclude=*/.cache/* \ |
|
--exclude=/.config/chromium/*/CacheStorage \ |
|
--exclude=*/.config/skypeforlinux/Cache \ |
|
--exclude=.local \ |
|
--exclude=.var/app/app.organicmaps.desktop/data \ |
|
--exclude=.steam \ |
|
--exclude=.smartgit/updates \ |
|
--exclude=.wine*/*/windows/ \ |
|
--exclude=.googleearth \ |
|
--exclude=*/.Genymobile \ |
|
--exclude=go/pkg \ |
|
--exclude=.apt \ |
|
--exclude=.npm \ |
|
--exclude=.gradle \ |
|
. |
|
echo "${file}" |
|
} |
|
mkalias_with_prefix 'backup_home' |
|
|
|
backup_() |
|
{ |
|
in_dir=$1 |
|
[ "$in_dir" = '' ] && printf "\n" && return |
|
ask_continue && return |
|
} |
|
#mkalias_with_prefix 'backup_' |
|
|
|
backup_() |
|
{ |
|
in_dir=$1 |
|
[ "$in_dir" = '' ] && printf "\n" && return |
|
ask_continue && return |
|
} |
|
#mkalias_with_prefix 'backup_' |
|
|
|
backup_() |
|
{ |
|
in_dir=$1 |
|
[ "$in_dir" = '' ] && printf "\n" && return |
|
ask_continue && return |
|
} |
|
#mkalias_with_prefix 'backup_' |
|
|
|
|