rotate.sh - Rotaciona arquivos de acordo com a data
Publicado por Aécio dos Santos Pires (última atualização em 23/09/2015)
[ Hits: 5.355 ]
Homepage: http://aeciopires.com
Rotaciona arquivos de acordo com a data no formato (AAAAMMDD).
Sintaxe de uso:
$ sudo rotate.sh [OPCOES]
Opcoes:
-a - exibe informacoes sobre o script.
Exemplo:
Rotate do log do Tomcat:
$ sudo rotate.sh
Obs.: informe o nome do arquivo diretamente na variavel '\$FILE' dentro do script na seção de declaração de variáveis para fazer rotação de um arquivo fixo (uso combinado com o crontab).
#!/bin/bash
#-------------------------------------------------------
# file: rotate.sh
# comment: Rotaciona arquivos de acordo com a data
# author: Aecio Pires e Denio Mariz<aeciopires,deniomariz@gmail.com>
# date: 08-set-2015
# revision: Aecio Pires <aeciopires@gmail.com>
# Last updated: 08-set-2015, 16:48
#-------------------------------------------------------
# OBS.:
# 0- De permissao de execucao ao script com o comando abaixo.
# sudo chmod +x PATH/rotate.sh
# 2- Execute-o script com o comando abaixo.
# sudo PATH/rotate.sh
# Onde: PATH => deve ser substituído pelo diretorio em que esta o script.
#Fonte: http://stackoverflow.com/questions/30883779/shell-script-rotate-files-while-the-file-keep-on-updating-with-data
################################################################
# Funcoes Gerais
################################################################
about(){
echo "#------------------------------------------------------#"
echo "file: $CMDLINE"
echo "version: 1.0"
echo "comment: Rotaciona arquivos de acordo com a data"
echo "author: Aecio Pires"
echo "date: 08-set-2015"
echo "revision: Aecio Pires <aeciopires@gmail.com>"
echo "last updated: 08-set-2015, 16:48"
echo "#------------------------------------------------------#"
exit 0
}
#----------------------------------------------------
# comment: Informa se o usuario que estah executando o script eh root
# syntax: isroot
# return: YES ou NO
#
isroot(){
MYUID=$(id | cut -d= -f2 | cut -d\( -f1)
[ $MYUID -eq 0 ] && echo YES || echo NO
}
#----------------------------------------------------
# Informa o modo correto de usar o script
usage() {
echo "Sintaxe de uso: sudo $CMDLINE [OPCOES]"
echo "Opcoes: "
echo "-a => exibe informacoes sobre o script."
echo ""
echo "Exemplos:"
echo ""
echo "Rotate do log do Tomcat:"
echo "sudo $CMDLINE /var/log/tomcat/catalina.out"
echo ""
echo "Ou Informe o nome do arquivo diretamente na variavel '\$FILE' dentro do script na secao de declaracao de variaveis."
}
#----------------------------------------------------
# Checa os parametros passados para o script
checkInput(){
# Obtendo os parametros e identificando as opcoes
while getopts ":a" OPT ; do
case $OPT in
a)
about
;;
*)
echo "[ERRO] Erro interno na passagem dos paramentros."
exit 3
;;
esac
done
shift $(($OPTIND - 1))
}
#-----------------------------------------------
#-----------------------------------------------
# MAIN
#-----------------------------------------------
#-----------------------------------------------
#**********************************************#
# Declaracao de variaveis globais
#**********************************************#
CMDLINE=$(readlink --canonicalize --no-newline "$BASH_SOURCE")
PROGDIRNAME=$(dirname $(readlink -f "$BASH_SOURCE"))
USER_ID=$(id | cut -d" " -f1 )
SERVER=$(hostname)
#Arquivo a ser rotacionado
#FILE=$1
FILE=$PROGDIRNAME/../logs/catalina.out
PERMISSION=$(stat -c "%a" $FILE)
USER=$(stat -c "%U" $FILE)
GROUP=$(stat -c "%G" $FILE)
DATE=`date +%Y%m%d`
NEWFILE="$FILE-$DATE"
#**********************************************#
if [ $(isroot) = NO ] ; then
echo "[ERRO] Voce deve ser root para executar este script."
exit 255
fi
if ! checkInput $* ; then
echo "[ERRO] Parametro invalido passado na chamada do script."
exit 3
fi
if [ ! -f $FILE ]; then
echo "[ERRO] O arquivo $FILE nao foi encontrado no host."
exit 1
fi
#Fazendo o rotate (assim o processo que esta alterando o arquivo no momento do rotate nao fica travado)
cp $FILE $NEWFILE
cat /dev/null > $FILE
#Fazendo o rotate (assim o processo que esta alterando o arquivo no momento do rotate fica travado)
#mv $FILE $NEWFILE
#chmod $PERMISSION $FILE
#chown $USER:$GROUP $FILE
if [ ! -f $NEWFILE ]; then
echo "[ERRO] O arquivo $NEWFILE nao foi encontrado no host. O rotate nao funcionou."
exit 4
elif [ ! -f $FILE ]; then
echo "[ERRO] O arquivo $FILE nao foi criado no host apos o rotate. O rotate nao funcionou."
exit 5
else
echo "[OK] O rotate funcionou."
echo "Os arquivos $FILE e $NEWFILE existem e contem as seguintes caracteristicas..."
echo "FILE=> $FILE"
LS=$(ls -ld $FILE)
echo "PERMISSION=: $LS"
echo ""
echo "NEWFILE=> $NEWFILE"
LS=$(ls -ld $NEWFILE)
echo "PERMISSION=> $LS"
fi
sync_local - backup/restauração local
MySQL - Script para backup automatizado
Backup usando o tar com o gzip
Script para gravação de BKPs em DVDs-RW
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









