Бэкап на linux

    В один прекрасный день мне понадобился скрипт бэкапов. Рассматривал большое количество различных вариантов. Многие не устроили по причине громоздкости. В итоге я написал свой скрипт :)

    Для бэкапа сайтов на веб-сервере — очень полезно и просто :) Пожелания по улучшению — приветствуются



    #!/bin/bash
    PATH_TO_ADIR="/var/www" # бэкапим все в этом каталоге
    PATH_TO_BDIR="/var/backup" #сюда складываем бэкап
    BACKDAYS="5" #сколько дней храним бэкапы

    # создаем директорию, если такой не существует
    if [ ! -d "$PATH_TO_BDIR/$(date +%Y-%m-%d)" ]; then
    mkdir $PATH_TO_BDIR/$(date +%Y-%m-%d)
    fi

    # тут мы бэкапим данные
    for file in $( /bin/ls $PATH_TO_ADIR);
    do
    /usr/bin/nice -n 5 tar zcfP $PATH_TO_BDIR/$(date +%Y-%m-%d)/$file-SITE-$(date +%Y-%m-%d).tgz $PATH_TO_ADIR/$file
    done

    DATM=`/bin/date -d '-'$BACKDAYS' day' +%Y%m%d`
    NOW=`/bin/date +%Y%m%d`
    DATH=`/bin/date --date="$i" +%Y%m%d`

    # а тут мы удаляем старые бэкапы
    for i in `ls $PATH_TO_BDIR/ | awk '{print $1}'`
    do
    if [ $DATH -le $DATM ];then
    /bin/rm -Rf $PATH_TO_BDIR/$i
    fi
    done


    Теперь добавляем задание в крон и выполняем его ежедневно, например в 3 часа ночи.
    Поделиться публикацией

    Похожие публикации

    Комментарии 15
      –2
      еще один…
      вот шикарное решение github.com/astrails/safe
        +3
        ставить на сервер руби только для бэкапа?
        да вы батенька извращенец…
          –2
          А ты против руби? :)
            0
            каждому свое место
            руби не место на серверах :)
        +1
        Хорошо, что пытаетесь писать свои решения, но в целом… велосипед.
          +3
          чем rsync не устроил?
            +1
            А еще точнее rsnapshot

            Инкрементальный бекап, с заданными итревалами создания и хранения.
            Велосипед…
            +2
            Скрипты, это очень хорошо и гибко. Но данный пример довольно банален.
              +1
              Ну, я собственно и не говорил, что это открытие чего-то нового. Просто выложил. Может кому будет надо :)
              0
              а переменная NOW какую роль выполняет в скрипте? Вам повезло что шелл на неиспользуемые переменные не ругается :)
                0
                Не усмотрел :) Эту версию, что я выложил — немного обрезанная :) Там как раз и используется эта переменная. Тут не усмотрел
                0
                а я открыл для себя backupninja и доволен
                  +2
                  трогательно то, что Вы (кажется) держите бэкапы на том же диске, что и исходные файлы. Значит, поломка железа не сильно волнует.

                  от хакеров или от собственных разработчиков защищаетесь? )
                    0
                    Поломка железа действительно не волнует, потому как этот скрипт был написан под специфику хостинга. Мы просто предоставляем своим клиентам этот скрипт. Бэкапы копируются с помощью rsync на отдельный сервер в случаях, когда клиент оплачивает эти услуги :)
                    0
                    BK_DIR не объявляется, поэтому старые бэкапы удаляться не будут

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое