rotate.sh - Rotaciona arquivos de acordo com a data
Publicado por Aécio dos Santos Pires (última atualização em 23/09/2015)
[ Hits: 4.960 ]
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
Backup do PostgreSQL 8.3 e aviso por e-mail
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta