каждую пятницу делается бэкап на удаленную машину, занимает примерно 400гб, всего хватает места на макс. 4 бэкапа, делаю с помощью tar в таком формате
Код: Выделить всё
tar -zcvpf /mnt/system-back-`date '+%d-%B-%Y'`.tar.gz /usr/home/public
Код: Выделить всё
tar -zcvpf /mnt/system-back-`date '+%d-%B-%Y'`.tar.gz /usr/home/public
аццкая штука...lexy писал(а):сейчас ковыряюсь с амандой (/usr/ports/misc/amanda-server), походу все уже написано до нас ))))))
сваяю - отпишусь
Код: Выделить всё
%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
}
%
Код: Выделить всё
%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 писал(а):Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
чет долго получаиццо :-)lexy писал(а):Именно этим и занимаюсь. Как что получится - отпишуprinceps писал(а):Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
та нии... разковырял я эту ээээ...мАнду. работает.... прикольно.... на винты пишет, НО! есть касяки, которые меня не устраивают. так что пока оставил все по старинке, ищу решения.. как чего будет - ну как написано выше.a-i писал(а):чет долго получаиццо :-)lexy писал(а):Именно этим и занимаюсь. Как что получится - отпишуprinceps писал(а):Оффтоп: Про аманду, пацаны, напишите. Я с первого захода тоже не смог: у меня оно не захотело на винчестер бэкапы делать.
зы:
хозяйка медной горы: ну что, мастер, невыходит каменный цветок?
мастер: *с характерным кряхтением* нееевыыыхооооодит....
Mesm писал(а):Здравствуйте, подскажите как лучше написать скрипт копирования по такому условию:
каждую пятницу делается бэкап на удаленную машину, занимает примерно 400гб, всего хватает места на макс. 4 бэкапа, делаю с помощью tar в таком форматетак вот при этом надо смотреть чтобы архивов было не больше 3х, и если больше то самые старые удалять. Как сделать такую проверку? Спасибо.Код: Выделить всё
tar -zcvpf /mnt/system-back-`date '+%d-%B-%Y'`.tar.gz /usr/home/public
Код: Выделить всё
server# date '+%d-%B-%Y'
08-мая-2008
server# date -v -1d '+%d-%B-%Y'
07-мая-2008