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

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Саша
мл. сержант
Сообщения: 126
Зарегистрирован: 2008-06-08 20:10:46
Контактная информация:

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

Непрочитанное сообщение Саша » 2010-08-03 11:34:30

День добрый у меня стоит сервак и + к нему поставил рядом для BACKUP'ov .

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

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

Непрочитанное сообщение hizel » 2010-08-03 11:47:49

use rsync, Luke
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Саша
мл. сержант
Сообщения: 126
Зарегистрирован: 2008-06-08 20:10:46
Контактная информация:

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

Непрочитанное сообщение Саша » 2010-08-03 11:50:34

hizel писал(а):use rsync, Luke
thanks это идеальное решение) для того что я хочу!
http://www.lissyara.su/articles/freebsd ... mms/rsync/

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

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

Непрочитанное сообщение thefree » 2010-08-03 13:36:47

backuppc - я вот использую
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
Саша
мл. сержант
Сообщения: 126
Зарегистрирован: 2008-06-08 20:10:46
Контактная информация:

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

Непрочитанное сообщение Саша » 2010-08-03 15:11:26

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

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

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

Непрочитанное сообщение Burner » 2010-08-03 20:00:37

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

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2010-08-05 0:50:25

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

Overseer
сержант
Сообщения: 221
Зарегистрирован: 2008-03-20 23:00:42

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

Непрочитанное сообщение Overseer » 2010-08-12 20:51:50

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

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

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

Непрочитанное сообщение thefree » 2010-08-12 21:43:58

backuppc
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету


Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

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

Непрочитанное сообщение Burner » 2010-08-19 6:50:23

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

Overseer
сержант
Сообщения: 221
Зарегистрирован: 2008-03-20 23:00:42

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

Непрочитанное сообщение Overseer » 2010-08-19 9:24:36

Burner писал(а): это называется rsnapshot
ну я это делаю с помощью rsync :"":

Pr0l
рядовой
Сообщения: 20
Зарегистрирован: 2009-03-06 8:56:07

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

Непрочитанное сообщение Pr0l » 2010-08-27 11:27:59

я скрипт писал сам

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

#! /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