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.251 ]
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
Lisa - sistema de backup com rsync
weekly-backup - backup agendado
Script de Backup do Perfil dos Usuários do Sistema em Batch do Windows
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Preciso recuperar videos *.mp4 corrompidos (4)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (7)
Secure boot, artigo interessante, nada técnico. (1)









