Скрипт резервного копирования

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Mesm
рядовой
Сообщения: 32
Зарегистрирован: 2008-02-01 14:21:08

Скрипт резервного копирования

Непрочитанное сообщение Mesm » 2008-04-14 9:59:20

Здравствуйте, подскажите как лучше написать скрипт копирования по такому условию:
каждую пятницу делается бэкап на удаленную машину, занимает примерно 400гб, всего хватает места на макс. 4 бэкапа, делаю с помощью tar в таком формате

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

tar -zcvpf /mnt/system-back-`date '+%d-%B-%Y'`.tar.gz /usr/home/public
так вот при этом надо смотреть чтобы архивов было не больше 3х, и если больше то самые старые удалять. Как сделать такую проверку? Спасибо.

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение Alex Keda » 2008-04-14 10:09:51

переношу в раздел скриптов
Убей их всех! Бог потом рассортирует...

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение princeps » 2008-04-14 10:29:20

У меня на одной из систем примерно так:

rm /mnt/system-back-2.tar.gz
cp /mnt/system-back.tar.gz /mnt/system-back-2.tar.gz
cp /mnt/system-back.tar.gz /mnt/system-back-1.tar.gz
tar -zcvpf /mnt/system-back.tar.gz /usr/home/public
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

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

Re: Скрипт резервного копирования

Непрочитанное сообщение hizel » 2008-04-14 11:02:45

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

Mesm
рядовой
Сообщения: 32
Зарегистрирован: 2008-02-01 14:21:08

Re: Скрипт резервного копирования

Непрочитанное сообщение Mesm » 2008-04-14 11:13:08

Хотелось бы конечно с датой, кросивее так мне кажется... Да и думаю будет очнь полезный скрипт для всех...

Аватара пользователя
lexy
сержант
Сообщения: 288
Зарегистрирован: 2006-07-21 9:54:44
Откуда: Волхов, ЛО
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение lexy » 2008-04-14 12:32:00

сейчас ковыряюсь с амандой (/usr/ports/misc/amanda-server), походу все уже написано до нас ))))))
сваяю - отпишусь

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение Alex Keda » 2008-04-14 14:20:13

lexy писал(а):сейчас ковыряюсь с амандой (/usr/ports/misc/amanda-server), походу все уже написано до нас ))))))
сваяю - отпишусь
аццкая штука...
я на неделе буду второй подход делать - с первого ниасилил...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
lexy
сержант
Сообщения: 288
Зарегистрирован: 2006-07-21 9:54:44
Откуда: Волхов, ЛО
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение lexy » 2008-04-14 14:41:26

аццкая, это да.....я под нее жедлезку то и заводил ))))

Mesm
рядовой
Сообщения: 32
Зарегистрирован: 2008-02-01 14:21:08

Re: Скрипт резервного копирования

Непрочитанное сообщение Mesm » 2008-04-14 16:21:43

Ну а всетаки) если посредством оболочки?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение Alex Keda » 2008-04-14 16:40:41

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

%cat /root/scripts/backup_bkp.sh
#!/bin/sh


# backup of filial server

# variables
work_preffix="/shares/backup"


# applictions
ls="/bin/ls"
sort="/usr/bin/sort"
head="/usr/bin/head"
grep="/usr/bin/grep"
rm="/bin/rm"
tar="/usr/bin/tar"
bzip2="/usr/bin/bzip2"

# получаем последнюю директорию - её не трогаем - пригодится админу
mkdir -p ${work_preffix}
cd ${work_preffix}
exclude_dir="`${ls} | ${sort} -r | ${head} -1`"

# получаем список директорий и последовательно его перебираем
${ls} | ${grep} -v ${exclude_dir} |
{
while read dir_name
do
        # по очереди обрабоатываем диретории.
        cd ${work_preffix}/${dir_name}
        ${rm} -f *.successful
        ${ls} | ${grep} -v ".tar.bz2" |
        {
        while read dir_name_2
        do
                # архивим содержимое
                #rm ${dir_name_2}.tar.bz2
                ${tar} --create --file=- ${dir_name_2} | ${bzip2} > ${dir_name_2}.tar.bz2 && rm -R ${dir_name_2}
        done
        }

done
}

%  
типа такого.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение Alex Keda » 2008-04-14 16:43:11

нето немножко...
это вторая часть того же.
вернее первая. вторая выше была

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

%cat /root/scripts/backup_srv.sh
#!/bin/sh

# variables
bkp_srv="vlgbkp"
bkp_srv_share="shares"
bkp_srv_share_subdir="backup"
srv_srv_share="shares"
mount_point="/mnt"
day_of_store_archive="5"        # what number days storing archives
shares_list_for_archive="RCIed RCIrep data profiles"

# applications
mount="/sbin/mount"
grep="/usr/bin/grep"
wc="/usr/bin/wc"
mount_nfs="/sbin/mount_nfs"
umount="/sbin/umount"
expr="/bin/expr"
df="/bin/df"
awk="/usr/bin/awk"
rm="/bin/rm"
mail="/usr/bin/mail"
tar="/usr/bin/tar"
bzip2="/usr/bin/bzip2"
mkdir="/bin/mkdir"

# vars
backup_dir="/mnt/${bkp_srv_share_subdir}/`/bin/date +%Y-%m-%d`"

# verifying - if share alredy mounted
if [ `${mount} | ${grep} nfs | ${grep} shares | ${wc} -l` -gt 0 ]
then
        # alredy mounted
#       echo "share mounted!"
        ${umount} ${bkp_srv}:/${bkp_srv_share}
        ${mount_nfs} -i ${bkp_srv}:/${bkp_srv_share} ${mount_point} \
        || (echo "fatal error archivation!!!" | \
        ${mail} -s not_mounted_backup_share root; exit 1;)
else
        # not mounted
#       echo "share not mounted!"
        ${mount_nfs} -i ${bkp_srv}:/${bkp_srv_share} ${mount_point} \
        || (echo "fatal error archivation!!!" | \
        ${mail} -s not_mounted_backup_share root; exit 1;)
fi

# check - mount or not mount backup share
if [ `${mount} | ${grep} ${mount_point} | ${wc} -l` = "0" ]
then
        # not mount!
        echo "Fatal erhivation error - share not mounted!" | \
        ${mail} -s Fatal_Error root
        exit 1;
fi


# check avalible space on backup share
bkp_share_space="`${df} -g | ${grep} ${bkp_srv} | ${awk} '{print $4}'`"
# check used space on local share
local_share_used_space="`${df} -g | ${grep} dev | ${grep} ${srv_srv_share} | ${awk} '{print $3}'`"
# calculate diff space
space_after_copy="`${expr} ${bkp_share_space} - ${local_share_used_space}`"
#echo "Space on backup: ${bkp_share_space}G; used on local share: ${local_share_used_space}G; calculate diff: ${space_after_copy}G"
if [ ${space_after_copy} -le 0 ]
then
        # no space on device!
        # delete archive copy
        # rm old_archives date -v-1d +%Y-%m-%d
        i=300
        while test $i != ${day_of_store_archive}
        do
                ${rm} -Rf /mnt/${bkp_srv_share_subdir}/`/bin/date -v-${i}d +%Y-%m-%d`
                i="`${expr} $i - 1`"
        done
fi

# start archiving
/bin/mkdir -p ${backup_dir}
cd /${srv_srv_share}
${tar} --create --file=- mail | bzip2 --best > ${backup_dir}/mail.tar.bz2
# copy directory tree to backup
for share_name in ${shares_list_for_archive}
do
/bin/cp -Rp ${share_name} ${backup_dir}/ && /usr/bin/touch ${backup_dir}/${share_name}.successful
done

cd /root/

sync
sleep 30
sync
sync

/sbin/umount ${mount_point}


%                                                                                                   
Убей их всех! Бог потом рассортирует...

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение princeps » 2008-04-14 16:59:36

Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

Аватара пользователя
lexy
сержант
Сообщения: 288
Зарегистрирован: 2006-07-21 9:54:44
Откуда: Волхов, ЛО
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение lexy » 2008-04-14 17:41:36

princeps писал(а):Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
Именно этим и занимаюсь. Как что получится - отпишу

a-i
проходил мимо

Re: Скрипт резервного копирования

Непрочитанное сообщение a-i » 2008-05-08 14:22:29

lexy писал(а):
princeps писал(а):Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
Именно этим и занимаюсь. Как что получится - отпишу
чет долго получаиццо :-)

зы:
хозяйка медной горы: ну что, мастер, невыходит каменный цветок?
мастер: *с характерным кряхтением* нееевыыыхооооодит....

Аватара пользователя
lexy
сержант
Сообщения: 288
Зарегистрирован: 2006-07-21 9:54:44
Откуда: Волхов, ЛО
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение lexy » 2008-05-08 14:48:00

a-i писал(а):
lexy писал(а):
princeps писал(а):Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
Именно этим и занимаюсь. Как что получится - отпишу
чет долго получаиццо :-)

зы:
хозяйка медной горы: ну что, мастер, невыходит каменный цветок?
мастер: *с характерным кряхтением* нееевыыыхооооодит....
та нии... разковырял я эту ээээ...мАнду. работает.... прикольно.... на винты пишет, НО! есть касяки, которые меня не устраивают. так что пока оставил все по старинке, ищу решения.. как чего будет - ну как написано выше.

ЗЫ. Бэкапы делают только трусы! (с) БАШ.Орг

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Скрипт резервного копирования

Непрочитанное сообщение dikens3 » 2008-05-08 22:00:57

Mesm писал(а):Здравствуйте, подскажите как лучше написать скрипт копирования по такому условию:
каждую пятницу делается бэкап на удаленную машину, занимает примерно 400гб, всего хватает места на макс. 4 бэкапа, делаю с помощью tar в таком формате

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

tar -zcvpf /mnt/system-back-`date '+%d-%B-%Y'`.tar.gz /usr/home/public
так вот при этом надо смотреть чтобы архивов было не больше 3х, и если больше то самые старые удалять. Как сделать такую проверку? Спасибо.

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

server# date '+%d-%B-%Y'
08-мая-2008
server# date -v -1d '+%d-%B-%Y'
07-мая-2008
Я думаю догадаешься как написать перед backup'ом команду rm /mnt/system-back-`date -v -1d '+%d-%B-%Y'`
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.