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.994 ]
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
Fazendo backup durante a semana em pastas distintas, equivalentes ao dia da semana
Backup do PostgreSQL 8.3 e aviso por e-mail
Shell Script para gravar iso de xbox 360 para LT 3.0 burnisolt3
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
De volta para o futuro - ou melhor, para o presente (23)
Plasma 6 com partes em inglês (0)
A area de trabalho ficou preta (6)