Friday, July 17, 2009

UNIX'TE BACKUP ALMA

UNIX üzerinde backup alma ile ilgili küçük bir shell script yazdım. yaptığı sadece diskler üzerinde gezdirme yapıyor. en son silme işlemini yapıyor. Linux cu arkadaşlar cok beğenmebilir ama basit ve sade bir shell script oldu.


#!/usr/bin/bash
datetime=`date '+%y%m%d'`
source_location_1=/d101/data/original_files
source_location_2=/d102/backup/original_files
target_location_1=/d102/backup/original_files/folder_$datetime
target_location_2=/d103/backup/original_files/folder_yedek
old_file_move=`ls -rt /d102/backup/original_files/ |grep "folder"| head -1`
old_file_delete=`ls -rt /d103/backup/original_files/folder_yedek/ |grep "folder"| head -1`
size1=75
size2=63
#gelen LOG dosyalarını koyacağı klasor yok ise yaratılıyor.
if [ -d ${target_location_1} ]
then
echo "Hedef Dizin Mevcut ${target_location_1} "
else
mkdir ${target_location_1}
echo "Hedef Dizin Olusturuldu ${target_location_1} "
fi
#////////////////////////////////////////////////////////////////////////
#sıkıştırma işlemi yapılarak yer kazancı sağlanıyor
#burada zipleme işlemi yapılıyor.
echo "dosyalar zipleniyor."
for zipfile in ` ls ${source_location_1} | grep ".LOG$"`
do
gzip $zipfile
echo $zipfile
done
#////////////////////////////////////////////////////////////////////////
#zipli dosyaları bul ve aktar.
#zipli dosyaları oluşturdak sonra bunları ilgili gün için yaratılmış olan dizine taşır.
echo "d102 dizininde ilgili yere taşınıyor"
for tarih in `ls ${source_location_1} |grep ".LOG.gz$"| awk '{print substr($1,4,6)}'`
do
file_pattern="???$tarih*.LOG"
mv ${source_location_1}/${file_pattern}.gz ${source_location_2}/folder_${tarih}/
echo ${source_location_1}/${file_pattern}.gz ${source_location_2}/folder_${tarih}/
done
#////////////////////////////////////////////////////////////////////////
#d102 nin %60 i doldugunda d103 e aktar.
#en eski dosyayı taşıyor.
echo "d102 dizininden d103 dizinine taşınıyor"
while [ $size1 -lt `df | grep /d102 | cut -c 38,39` ];
do
mv ${source_location_2}/${old_file_move} ${target_location_2}
echo ${source_location_2}/${old_file_move} ${target_location_2}
done
#////////////////////////////////////////////////////////////////////////
#d103 %70 doldugunda en eski olanı siliyor.
echo "d103 dizininden siliniyor."
while [ $size2 -lt `df | grep /d103 | cut -c 38,39` ];
do
rm -R ${target_location_2}/${old_file_delete}
echo ${target_location_2}/${old_file_delete}
done
echo "işlemler bitti"

No comments: