1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Backup может кому пригодится... замечания/дополнения приветствуются.

Тема в разделе "Утилиты", создана пользователем metr, 1 мар 2015.

  1. TopicStarter Overlay
    metr

    metr Новичок

    Регистрация:
    02.05.13
    Сообщения:
    26
    Симпатии:
    7
    Баллы:
    10
    Код:
    #!/bin/bash
    # Damp_script v_0_1
    
    dir=/jb #Директория с архивируемыми файлами
    dump_dir=/dump #Директория куда складывать дампы
    LOG=/var/log/klad.log #Файл лога
    old_dump="1" #Через сколько суток удалять дампы
    user="root" # User MYSQL
    passw="qwerty" # Password MYSQL
    mysql_db="test" # Basename|Имя базы данных или несколько баз,перечисленных через пробел.
    
    help_script(){
    cat<<End-of
    Порядок использования:
    
    `basename $0` -Скрипт работает в неинтерактивном режиме. Все исходные данные указываются в теле скрипта.
    `basename $0` [-u|-f|-h]
    КЛЮЧИ:
    
            -u -Распаковать архив с указанием директории и базы данных
            -f -Удалить устаревшую резервную копию(не интерактивно), перед созданием дампа
               -h -Вывести справку
    
    End-of
    exit 0
              };
    edate(){
    if [ -t 1 ];then
    echo -e "$0:\t$1"
    else echo -n "$(date "+%F_%T") ";echo "$1"
    fi
        };
    log(){
    if [ "$1" -eq 0 ];then
    exec 3>&1;exec >>$LOG;exec 4>&2;exec 2>>$LOG
    elif [ "$1" -eq 1 ];then
    exec 1>&3 3>&-;exec 2>&4 4>&-;echo "TTY"
    fi
        };
    unzip_d(){
        echo;read -p "Введите название дампа: " dump_name;echo
        read -p "Введите директорию куда распаковать дамп: " dir_unzip;echo
        read -n1 -p "Удалить файлы из деректории в которую распаковывать архив?(y/n|д/н): " clean;echo;echo
    
        case $clean in
        y|Y|д|Д) $(rm -rf $dir_unzip/*)&&echo -e "Директория очищена!\n\vРаспаковываются файлы...";;
        n|N|н|Н) echo -e "\vРаспаковываются файлы...";;
        esac
        tar -zxf ./$dump_name -C $dir_unzip
        if [ "$?" -eq 0 ];then
        echo;echo "Файлы успешно распакованы из архива!";echo
        else echo;echo "Ооой... произошла ошибка!";echo
        fi
          };
    find_d(){
            cd $dump_dir&&find . -ctime +$old_dump -delete
             };
    dump_d(){
            cd $dir
            if [ "$?" -eq 0 ];then
            date_tar=$(date "+%m.%d.%y_%R")
            tar -zcf $dump_dir/${date_tar}.tar.gz . && edate "Тарболл $dir успешно создан ;)"
            else edate "Не удалось перейти в директорию с архивируемыми файлами($dir)!!!";exit 1
            fi
            date_sql=$(date "+%m.%d.%y_%R")
            mysqldump -u $user -p$passw -B $mysql_db|gzip -9>$dump_dir/${date_sql}.sql.gz&&edate "Дамп $mysql_db успешно создан"
            };
    while getopts ":fuhl" opt;do
        case $opt in
        h) help_script;;
        f) find_d;;
        u) unzip_d;exit 0;;
        l) log "0";dump_d;log "1";exit 0;;
        *) echo -e "\v\tНе поддерживаемый ключ!\v";help_script;;
        esac
    done
    
    dump_d
    
    exit 0
    Herius, alex_xpert и cerber нравится это.

Поделиться этой страницей