O script a seguir copiará um arquivo de log definido ( source
) até um número que você possa definir ( max_number
, até 99 como o script agora) em um diretório que você possa definir ( dest
). Os arquivos de log serão nomeados "01logfilename", 02logfilename etc, até o número que você definir.
Se o número máximo de cópias for atingido, o script sempre manterá o último número (definido) de logs, renomeando os arquivos toda vez que o script for executado.
Você pode executar o script adicionando-o aos seus aplicativos de inicialização (Dash > Startup Applications). Observe que você precisa ter permissões suficientes no destino, se você executá-lo no login.
O script
#!/usr/bin/python3
import os
import shutil
source = "/path/to/logfile"
dest = "/path/to/destination/to_keep_the_logs"
max_number = 10 # set number up to 99
files_indest = [i for i in sorted(os.listdir(dest)) if not i.endswith("~")]
sections = [(item[:3], item[3:]) for item in files_indest]
number_oflogs = len(files_indest)
def convert_figures(number):
if len(str(number)) < 2:
return "0"+str(number)
else:
return str(number)
def lognumbers():
return [convert_figures(number+1) for number in range(0, number_oflogs+1)]
lognumbers = lognumbers()
if number_oflogs >= max_number:
os.remove(dest+"/"+files_indest[0])
for index in range(1, number_oflogs):
shutil.move(dest+"/"+files_indest[index],
dest+"/"+lognumbers[index-1]+files_indest[index][2:])
shutil.copyfile(source, dest+"/"+lognumbers[-2]+source.split("/")[-1])
else:
shutil.copyfile(source, dest+"/"+lognumbers[-1]+source.split("/")[-1])
Como usar
- Copie o script e cole em um arquivo de texto vazio, seguro como logscript.py
- Defina o arquivo de origem (log) depois de
source
(por exemplo,source = "/var/log/Xorg.0.log"
) - Defina a pasta de destino para manter os arquivos de log depois de
dest
- Defina o número máximo de arquivos de log para manter
- Adicione o seguinte comando aos seus aplicativos de inicialização:
python3 /path/to/script/script.py
Não é necessário dizer que, se você quiser / precisar executar o script antes do login, precisará iniciá-lo em outro nível.