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