Страница 1 из 1

Скрипт backup системы

Добавлено: 2010-08-03 11:34:30
Саша
День добрый у меня стоит сервак и + к нему поставил рядом для BACKUP'ov .

Я в этом деле новичёк подскажите пожалуйста как сделать корректно,
создать правильный скрипт чтобы выполнялось к примеру tar -cpvf /var/backup/server.tar --exclude /var/backup/ / каждую субботу в 00:00
а потом уже по ssh через scp перекидывал на бэкаповский сервер
если не сложно прощу помочь

Re: Скрипт backup системы

Добавлено: 2010-08-03 11:47:49
hizel
use rsync, Luke

Re: Скрипт backup системы

Добавлено: 2010-08-03 11:50:34
Саша
hizel писал(а):use rsync, Luke
thanks это идеальное решение) для того что я хочу!
http://www.lissyara.su/articles/freebsd ... mms/rsync/

Re: Скрипт backup системы

Добавлено: 2010-08-03 13:36:47
thefree
backuppc - я вот использую

Re: Скрипт backup системы

Добавлено: 2010-08-03 15:11:26
Саша
hizel писал(а):use rsync, Luke
постой он же экскрементно работает ... следовательно все сбои будет клонить так же (если админ отлучился на пол месяца к примеру)
а вот если систему в tar заворачивать и на внешний сервак складывать не эффективнее будет?

Re: Скрипт backup системы

Добавлено: 2010-08-03 20:00:37
Burner
Саша писал(а):постой он же экскрементно работает ... следовательно все сбои будет клонить так же (если админ отлучился на пол месяца к примеру)
а вот если систему в tar заворачивать и на внешний сервак складывать не эффективнее будет?
ааааа, шьорт побьери. Люди, учите русский язык.

Re: Скрипт backup системы

Добавлено: 2010-08-05 0:50:25
FiL
Саша писал(а):
hizel писал(а):use rsync, Luke
постой он же экскрементно работает ... следовательно все сбои будет клонить так же (если админ отлучился на пол месяца к примеру)
а вот если систему в tar заворачивать и на внешний сервак складывать не эффективнее будет?
man rsync
/-b
/--backup-dir

Re: Скрипт backup системы

Добавлено: 2010-08-12 20:51:50
Overseer
Саша писал(а):
hizel писал(а):use rsync, Luke
постой он же экскрементно работает ... следовательно все сбои будет клонить так же (если админ отлучился на пол месяца к примеру)
а вот если систему в tar заворачивать и на внешний сервак складывать не эффективнее будет?
можно бекапить инкрементально, каждый бекап ложить в отдельную папку, а неизменяющиеся файлы хардлинковать. + сжатие трафика, если критично.
преимущества: можно грохать любой старый бекап (каталог); благодаря хардлинкованию - меньше места; восстановление хоть тупым копированием хоть рсинком; старые бекапы можно неспешно сжимать на бекапном, не нагружая основной сервер; нормальный доступ к любому файлу бекапа, без танцев с [s]бубном[/s] таром.

Re: Скрипт backup системы

Добавлено: 2010-08-12 21:43:58
thefree
backuppc

Re: Скрипт backup системы

Добавлено: 2010-08-18 18:46:44
ADRE
а Манда? =)

Re: Скрипт backup системы

Добавлено: 2010-08-19 6:50:23
Burner
Overseer писал(а): можно бекапить инкрементально, каждый бекап ложить в отдельную папку, а неизменяющиеся файлы хардлинковать. + сжатие трафика, если критично.
преимущества: можно грохать любой старый бекап (каталог); благодаря хардлинкованию - меньше места; восстановление хоть тупым копированием хоть рсинком; старые бекапы можно неспешно сжимать на бекапном, не нагружая основной сервер; нормальный доступ к любому файлу бекапа, без танцев с [s]бубном[/s] таром.
это называется rsnapshot

Re: Скрипт backup системы

Добавлено: 2010-08-19 9:24:36
Overseer
Burner писал(а): это называется rsnapshot
ну я это делаю с помощью rsync :"":

Re: Скрипт backup системы

Добавлено: 2010-08-27 11:27:59
Pr0l
я скрипт писал сам

Код: Выделить всё

#! /bin/sh
day=`date \+\%a`                                                        # вывод дня недели
dt=`date \+\%Y\%m\%d`                                                   # дата в формате 20091231
dt1=`date \+\%d.\%m.\%Y`                                                # дата в формате 2009.12.31
dt8=`date -v-8d \+\%d.\%m.\%Y`                                          # дата в формате 2009.12.31 минус 7 дней
dt14=`date -v-14d \+\%d.\%m.\%Y`                                        # дата в формате 2009.12.31 минус 14 дней
old8=`date -v-8d \+\%Y\%m\%d`                                           # получаем дату которая была 8 дней назад
old3=`date -v-3d \+\%Y\%m\%d`                                           # получаем дату которая была 3 дня назад
rsync="/usr/local/bin/rsync"                                            # rcync место нахождения
mounts="//administrator@server/backup"                                  # сетевой ресурс который монтируем
in="/backup"                                                            # исходная папка
out="/shares/gm4/Pub/"                                                  # конечная папка
out1="/shares/gm4/Pub/backup"                                           # конечная папка
out2="/shares/gm4/Pub/backup/week"                                      # конечная папка
log="/shares/gm4/Pub/backup/log/$dt1-log.doc"                           # куда пишем лог
log1="/shares/gm4/Pub/backup/log/$dt8-log.doc"                          # лог 8 дней назад
inc=--include                                                           # исключаем
exc=--exclude                                                           # включаем
nam0="rsync"                                                            # имя скрипта
nam1="rar"                                                              # имя файла для проверки
#sleep 10
echo " " >> $log
echo "0. Время начала скрипта:" `date` >> $log
#######################################################
########### Проверка на повторный запуск ##############
        echo "1. Проверка на запуск копии ..." >> $log
rn0=`ps -ax | grep -c $nam0`
        echo "rn0 = "$rn0
if !(test $rn0 -gt "2")
    then
        echo "2. Скрипт уже запущен!!!" >> $log
        exit 2;
    else
        echo "2. Скрипт запускается..." >> $log
fi
########################################################
        echo "3. Монтирую сетевой диск..." >> $log
mount_smbfs -N $mounts $in &&                                           # монтируем сетевой каталог
#######################################################
########### Проверяем подмонтировалась ли папка #######
rn1=`ls -l $in | grep -c $nam1`
        echo "rn1 = "$rn1
if !(test $rn1 -gt "0")
    then
        echo "4. Сетевой диск не примонтирован!!!" >> $log
        umount $in
        exit 0;
    else
        echo "4. Сетевой диск примонтирован..." >> $log
fi
######################################################
########## Синхронизация папок #######################
        echo "5. Синхронизация..." >> $log
$rsync -auxS --progress $inc '*.rar' $exc 'tmp' $exc '*.*' $in $out && >> $log # синхронизируем файлы с раширением rar
echo " " >> $log
rn2=`ls -l $out1 | grep -c base$dt.rar`
        echo "rn2 = "$rn2
if !(test $rn2 -gt "0")
    then
        echo "6. Базы не синхронизировались, или нет новых баз!!!" >> $log
        umount $in
        exit 0;

    else
        echo "6. Синхронизация закончена." >> $log
fi

########################################################
#### Сохраняем недельный архив отдельно от всех баз ####
if [ "$day" = "Sun" ]
then
echo "7. Сохраняем недельный архив..." >> $log
    mkdir "$out1/"week
#2>/dev/null
    cp "$out1/"base$dt.rar "$out2"
# 2>dev/null
echo "7.1 Проверяем недельный архив..." >> $log
rn21=`ls -l $out2 | grep -c base$dt.rar`
if !(test $rn21 -gt "0")
    then
echo "7.2. Недельная база не записалась!!!" >> $log
    else
echo "7.2 Недельная база на месте." >> $log
fi
echo "7.3 Удаляем старые недельные базы..." >> $log
    rm "$out2/"base$dt14.rar 2>/dev/null
echo "7.4 Удалено." >> $log
        else
        echo " 7.4 Не найдены старые недельные архивы!!!" >> $log
fi

########################################################
#### Дальше проверяем предпредпоследний архив базы #####
        echo "8. Проверка архивов..." >> $log
rn3=`ls -l $in | grep -c base$old3.rar`                                         # тут происходит поиск предпредпоследний базы
echo "old3 = "$old3
        echo "rn3 = "$rn3
#Если базы нету отправляем мыло, останавливаем скрипт
if !(test $rn3 -gt "0")
    then
        echo "9. Warning!!! нет старых архивов!!!" >> $log
        umount $in
        exit 0;
# Если она есть то удаляем старые базы
    else
        echo "9. Все в порядке базы на месте, удаляем старые архивы!" >> $log
        rm "$out/backup/"base$old8.rar 2>/dev/null                               # удаляем в конечной папке 8 дневные архивы
        rm "$in/"base$old8.rar 2>/dev/null                                       # удаляем в исходной папке 8 дневные архивы
        rm "$log1" 2>/dev/null                                                   # удаляем в исходной папке 8 дневные логи
fi
######################################################
########### Проверяем подмонтировалась ли папка #######
    echo "10. Отключаю сетевой диск..." >> $log
umount $in
rn4=`ls -l $in | grep -c $nam1`
        echo "rn4 = "$rn4
if !(test $rn4 -gt "0")
    then
        echo "11. Сетевой диск отмонтирован!!" >> $log
echo "12. Скрипт завершен в:" `date` >> $log
        exit 0;
    else
        echo "13. Не смог отмонтировать сетевой диск!!!" >> $log
        cd $out
        umount $in
fi