diff --git a/Backup/2sync b/Backup/2sync deleted file mode 100755 index e476de6..0000000 --- a/Backup/2sync +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# Двухсторонняя синхронизация -# Использование: -# ./2sync src dest [opt1] [opt2] - -src=$1 -dest=$2 -opt1=$3 -opt2=$4 - -rsync -r -t -v $opt1 $opt2 --progress -s --omit-dir-times $src $dest -rsync -r -t -v $opt1 $opt2 --progress -s --omit-dir-times $dest $src - - diff --git a/Backup/2sync_all b/Backup/2sync_all deleted file mode 100755 index 0b2cea0..0000000 --- a/Backup/2sync_all +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -# Двухсторонняя синхронизация с сервером всех объектов в текущей папке -# Использование: -# ./2sync_all filter dest_base opt1 opt2 -# filter - маска по файлам -# dest_base - базовый путь для синхронизации, может содержать сервер, например: backup@www_server:/media/Backup -# opt1,2 - дополнительные опции rsync. -# Примеры: -# 1. Опция "-n" для теста -# 2. Опция "--delete" для удаления файлов - -filter=$1 -dest_base=$2 -opt1=$3 -opt2=$4 - -files=`ls -p | grep / | grep ${filter} |sort` - -cur_dir="$(pwd)/" - -for file in $files; do - src="${cur_dir}/${file}/" - dest="${dest_base}/${file}/" - - ./2sync $src $dest $opt1 $opt2 -done - - - - diff --git a/Backup/GetDelFileList b/Backup/GetDelFileList deleted file mode 100755 index 51350ab..0000000 --- a/Backup/GetDelFileList +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# -------------Входные параметры--------------- - -# Максимальное колличество файлов, которое должно остаться -maxFilesCount=$1 -# Набор файлов, первые из которых будут удалены -files=$2 - -# -------------Выходной параметр--------------- -# Файлы, которые нужно удалить -delFiles="" - -# --------------------------------------------- -# Вычисляем колличество файлов -filesCount=0 -for i in $files -do - let filesCount++ -done - -# Записываем файлы для удаления в переменную delFiles - -if [ $maxFilesCount -lt $filesCount ] -then - - delFilesIndex=0 - let delFilesCount=filesCount-maxFilesCount - - for i in $files - do - if [ $delFilesIndex -lt $delFilesCount ] - then - delFiles=`echo -en "${delFiles}\n${i}"` - fi - let delFilesIndex++ - done - -fi - -echo $delFiles - diff --git a/Backup/MakeFirefoxBackup b/Backup/MakeFirefoxBackup deleted file mode 100755 index 028c9fa..0000000 --- a/Backup/MakeFirefoxBackup +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Делает бэкап папки ~/.mozilla -# Использование: -# ./MakeFirefoxBackup backup_dir - -backup_dir=$1 -if [ "$backup_dir" == "" ]; then - backup_dir="." -fi - -# Делаем бекап -cd ~ -tar cvpzf "${backup_dir}/$(hostname)_mozilla_backup_$(date +%yy%mm%dd-%Hh%Mm%Ss).tgz" \ ---exclude=.mozilla/firefox/*.*/Cache \ -.mozilla - -#--exclude=.mozilla/firefox/*.*/storage \ - diff --git a/Backup/MakeHomeBackup b/Backup/MakeHomeBackup deleted file mode 100755 index 66fdab1..0000000 --- a/Backup/MakeHomeBackup +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -# Делает бэкап папки /home -# Использование: -# ./MakeHomeBackup backup_dir - -backup_dir=$1 -if [ "$backup_dir" == "" ]; then - backup_dir="/home" -fi - -maxFilesCount=3 -# Выясняем, какие старые архивы нам нужно удалить -files=`find ${backup_dir}/*home_backup_*|sort` -delFiles=`./GetDelFileList $maxFilesCount "${files}"` - -# Делаем бекап -cd /home -sudo tar cvpzf "${backup_dir}/$(hostname)_home_backup_$(date +%yy%mm%dd-%Hh%Mm%Ss).tgz" \ ---exclude=*home_backup*.tgz \ ---exclude=.thumbnails \ ---exclude=.mozilla/firefox/*.*/storage \ ---exclude=*/.cache/* \ ---exclude=*/Загрузки/* \ ---exclude=*/Backup/* \ ---exclude=*/Музыка/* \ ---exclude=.cache \ ---exclude=/.config/chromium/*/CacheStorage \ ---exclude=*/.config/skypeforlinux/Cache \ ---exclude=.local \ ---exclude=.var/app/app.organicmaps.desktop/data \ ---exclude=media \ ---exclude=.steam \ ---exclude=.smartgit/updates \ ---exclude=.wine*/*/windows/ \ ---exclude=.googleearth \ ---exclude=*/.Genymobile \ ---exclude=*/3D_Model/assets \ ---exclude=private \ ---exclude=MyProgs \ ---exclude=go/pkg \ ---exclude=.apt \ ---exclude=.npm \ ---exclude=.gradle \ -. - -# Удаляем старые архивы -for i in $delFiles -do - sudo rm $i -done diff --git a/Backup/MakeSystemBackup b/Backup/MakeSystemBackup deleted file mode 100755 index 80f2117..0000000 --- a/Backup/MakeSystemBackup +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -# Делает бэкап папки / -# Использование: -# ./MakeSysBackup backup_dir - -backup_dir=$1 -if [ "$backup_dir" == "" ]; then - backup_dir="/" -fi - -maxFilesCount=3 -# Выясняем, какие старые архивы нам нужно удалить -files=`find ${backup_dir}/*sysbackup_*|sort` -delFiles=`./GetDelFileList $maxFilesCount "${files}"` - -cd / - -sudo tar cvpzf "${backup_dir}/$(hostname)_sys_etc_backup_$(date +%yy%mm%dd-%Hh%Mm%Ss).tgz" \ -/etc - -sudo tar cvpzf "${backup_dir}/$(hostname)_sysbackup_$(date +%yy%mm%dd-%Hh%Mm%Ss).tgz" \ ---exclude=/proc \ ---exclude=/dev \ ---exclude=/lost+found \ ---exclude=/*sysbackup*.tgz \ ---exclude=/mnt \ ---exclude=/run/media \ ---exclude=/sys \ ---exclude=/home \ ---exclude=/media \ ---exclude=/var/log \ ---exclude=/var/cache \ ---exclude=/var/lib/flatpak \ ---exclude=/var/tmp \ ---exclude=/usr/share \ ---exclude=/tmp \ ---exclude=/opt \ -/ - -# Удаляем старые архивы -for i in $delFiles -do - sudo rm $i -done diff --git a/Backup/RestoreBackup b/Backup/RestoreBackup deleted file mode 100644 index c1b7dbc..0000000 --- a/Backup/RestoreBackup +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sudo tar xvpzf $1 -C / diff --git a/Script/alias_main b/Script/alias_main index 70457a8..7298454 100755 --- a/Script/alias_main +++ b/Script/alias_main @@ -14,5 +14,6 @@ source "${alias_dir}/parse_arg_lib" source "${alias_dir}/img_and_wav2video" source "${alias_dir}/nmap" source "${alias_dir}/backup" +source "${alias_dir}/sync" diff --git a/Script/backup b/Script/backup index c54c0c5..3464466 100644 --- a/Script/backup +++ b/Script/backup @@ -39,27 +39,41 @@ backup_delete_old_files_by_date() file_max_count_every_day=$3 file_max_count_every_month=$4 file_max_count_every_year=$5 + by_week=$6 [[ "$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___________' + if [[ "$by_week" == "" ]]; then + 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___________' + else + backup_delete_old_files_by_regex "${backup_dir}" "${file_name_template//'@DATE'/'.*'}" "${file_max_count_every_day}" '1v-|11v-' + backup_delete_old_files_by_regex "${backup_dir}" "${file_name_template//'@DATE'/'.*1v.*'}" "${file_max_count_every_month}" '11v-' + backup_delete_old_files_by_regex "${backup_dir}" "${file_name_template//'@DATE'/'.*11v-.*'}" "${file_max_count_every_year}" '________NOTHONG___________' + fi # 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; + # for (( y = 2001; y < 2010; y++ )) do for (( v = 10; v < 51; v++ )) do touch "backup_${y}y_01m_01d-${v}v-10H.zip"; backup_delete_old_files_by_date ./ "backup_@DATE\.zip" 2 2 2 week; sleep 0.15; done; done; } mkalias_with_prefix 'backup_delete_old_files_by_date' +backup_date() +{ + return $(date +%Yy_%mm_%dd-%Vv-%Hh_%Mm_%Ss) +} +mkalias_with_prefix 'backup_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" + file="${backup_dir}/$(hostname)_mozilla_backup_$(backup_date).tgz" tar cvpzf "${file}" \ --exclude=.mozilla/firefox/*.*/Cache \ .mozilla @@ -75,7 +89,7 @@ backup_home() #ask_continue && return cd /home - file="${backup_dir}/$(hostname)_home_backup_$(date +%Yy_%mm_%dd-%Hh_%Mm_%Ss).tgz" + file="${backup_dir}/$(hostname)_home_backup_$(backup_date).tgz" sudo tar cvpzf "${file}" \ --exclude=*home_backup*.tgz \ --exclude=*/Загрузки/* \ @@ -105,27 +119,46 @@ backup_home() } mkalias_with_prefix 'backup_home' -backup_() +backup_etc() { - in_dir=$1 - [ "$in_dir" = '' ] && printf "\n" && return - ask_continue && return + backup_dir=$1 + [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + #ask_continue && return + cd / + file="${backup_dir}/$(hostname)_sys_etc_backup_$(backup_date).tgz" + sudo tar cvpzf "${file}" \ + /etc + echo "${file}" } -#mkalias_with_prefix 'backup_' +mkalias_with_prefix 'backup_etc' -backup_() +backup_sys() { - in_dir=$1 - [ "$in_dir" = '' ] && printf "\n" && return - ask_continue && return + backup_dir=$1 + [ "$backup_dir" = '' ] && printf "Укажите папку для бекапа\n" && return + #ask_continue && return + cd / + file="${backup_dir}/$(hostname)_sysbackup_$(backup_date).tgz" + sudo tar cvpzf "${file}" \ + --exclude=/*_sysbackup_*.tgz \ + --exclude=/proc \ + --exclude=/dev \ + --exclude=/lost+found \ + --exclude=/mnt \ + --exclude=/run/media \ + --exclude=/sys \ + --exclude=/home \ + --exclude=/media \ + --exclude=/var/log \ + --exclude=/var/cache \ + --exclude=/var/lib/flatpak \ + --exclude=/var/tmp \ + --exclude=/usr/share \ + --exclude=/tmp \ + --exclude=/opt \ + / + echo "${file}" } -#mkalias_with_prefix 'backup_' +mkalias_with_prefix 'backup_sys' -backup_() -{ - in_dir=$1 - [ "$in_dir" = '' ] && printf "\n" && return - ask_continue && return -} -#mkalias_with_prefix 'backup_' diff --git a/Script/sync b/Script/sync new file mode 100644 index 0000000..01a8902 --- /dev/null +++ b/Script/sync @@ -0,0 +1,50 @@ +#!/bin/bash + +[ "${alias_dir}" = "" ] && alias_dir=$(pwd) +source "${alias_dir}/common" + +sync_2dir() +{ + # Двухсторонняя синхронизация + # Использование: + # ./2sync src dest [opt1] [opt2] + + src=$1 + dest=$2 + opt1=$3 + opt2=$4 + + rsync -r -t -v $opt1 $opt2 --progress -s --omit-dir-times $src $dest + rsync -r -t -v $opt1 $opt2 --progress -s --omit-dir-times $dest $src +} +mkalias_with_prefix 'sync_2dir' + +sync_by_filter() +{ + # Двухсторонняя синхронизация с сервером всех объектов в текущей папке + # Использование: + # sync_by_filter filter dest_base opt1 opt2 + # filter - маска по файлам + # dest_base - базовый путь для синхронизации, может содержать сервер, например: backup@www_server:/media/Backup + # opt1,2 - дополнительные опции rsync. + # Примеры: + # 1. Опция "-n" для теста + # 2. Опция "--delete" для удаления файлов + + filter=$1 + dest_base=$2 + opt1=$3 + opt2=$4 + + files=`ls -p | grep / | grep ${filter} |sort` + + cur_dir="$(pwd)/" + + for file in $files; do + src="${cur_dir}/${file}/" + dest="${dest_base}/${file}/" + + sync_2dir $src $dest $opt1 $opt2 + done +} +mkalias_with_prefix 'sync_by_filter'