Необходимо найти логи, произвести их архивацию и перенести архив(ы) на ftp сервер.
Имеем два файла
find_rf.sh – shell скрипт
и
way.txt – содержит:
/home/nau/adump,PROD/oracle/adamp,prod_oracle_adamp_trc_ /home/nau/bdump,PROD/oracle/bdamp,prod_oracle_bdamp_trc_ /home/nau/cdump,PROD/oracle/cdamp,prod_oracle_cdamp_trc_ /home/nau/ddump,PROD/oracle/ddamp,prod_oracle_ddamp_trc_
, где
1) путь откуда будем забирать файлы (/home/nau/adump)
2) путь на ftp куда будем складывать файлы (PROD/oracle/adamp)
3) имя файла архива (prod_oracle_adamp_trc_)
Описание работы find_rf.sh – shell скрипт
#Стандартный разделитель ($IFS),
SEVEDIFS=$IFS #сохраняем стандартный разделитель в отдельную переменную
IFS=, #меняем стандартный на свой
#WHENCE - путь откуда будем забирать файлы
#WHERE - путь на ftp куда будем складывать файлы
#NAME - имя файла архива
#read WHENCE WHERE NAME читаем построчно содержимое файла way.txt в переменные
while read WHENCE WHERE NAME
do
#find <директория для поиска> <маска поиска файлов> <ищем только файлы> <файлы были созданы/редактированы n дней назад>
#tar <создать архив> --files-from=- получить их имена
#--remove-files удаление файлов после их архивирования
#`date +%d-%m-%Y` добавляем к имени файла текущие год месяц и число (19-06-2009)
#сжимаем с помощью bzip2, log.tar в имени обязательно
find $WHENCE -name *.trc -type f -mtime -10 | tar c --files-from=- --remove-files | bzip2 > $WHENCE/$NAME`date +%d-%m-%Y`.log.tar.bz2
#заносим в переменные адрес ftp, логин и пароль
HOST='<адрес>'
USER='<логин>'
PASSWD='<пароль>'
#далее идет соединение с ftp сервером
ftp -n $HOST <<EOF
user $USER $PASSWD
#cd переход в директорию на ftp
cd $WHERE
#lcd переход в директорию на локальной машине
lcd $WHENCE
#переносим файлы на ftp
put $NAME`date +%d-%m-%Y`.log.tar.bz2
quit
EOF
#rm стереть созданный архив файл
rm -f $WHENCE/$NAME`date +%d-%m-%Y`.log.tar.bz2
#done < /home/nau/xcron/way.txt бегаем по этому файлу построчно, необходимо указать полный путь к файлу
done < /home/nau/xcron/way.txt
#возвращаем стандартный разделитель
IFS=$SEVEDIFS
exit 0
|