2 changed files with 132 additions and 7 deletions
@ -0,0 +1,131 @@
|
||||
#!/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_' |
||||
|
Loading…
Reference in new issue