Eu tenho um diretório em um compartilhamento CIFS com mais de 10.000 arquivos que contém vários arquivos de log do servidor no formato CCLLLTTTFFFFNNN YYYY-MM-DD
no mínimo . Onde:
- Nome do servidor que consiste em:
CC
= Nome ISO do paísLLL
= Localização (código IATA da cidade mais próxima)TTT
=WIN
ouUNX
(e por que é um compartilhamento CIFS)FFFF
= Função do servidornnn
= número
- um espaço
- um encontro
- às vezes mais algum texto contendo palavras com espaços
- uma extensão (sempre)
Alguém que não está mais trabalhando para a empresa configurou isso e todos os servidores globalmente despejam seus logs diários lá e leva uma eternidade para carregar a lista de arquivos! Todo mundo que precisa de toras choraminga e vadias reclama disso , mas ninguém nunca faz nada, então comecei a fazer algo sobre isso só para mim .
A ideia:
Em vez de uma longa lista de arquivos, por que não ter uma pequena lista de diretórios pelo menos 2 ordens de magnitude menor com os nomes dos servidores e cron
um script diário que move todos esses arquivos para o diretório? ¹
O que eu tenho?
bash
- Acesso a
gcc
- Acesso de gravação ao compartilhamento CIFS (obviamente)
- Manjaro, um derivado do Arch
- Escritório aberto
O que eu fiz até agora?
ls /mnt/logshare/*UNXSAP* > ~/Documents/logs/logshare.txt
- Importar logshare.txt para o OpenOffice Calc
- crie um diretório com o nome do servidor
- Gere uma tonelada de
mv
comandos usando Calc e fórmulas
- copie e cole isso em um script de shell
- executar script de shell
Mas:
- Eu me tornei uma vítima do meu próprio sucesso
- O grupo de segurança e aplicativos viu meus diretórios surgirem e querem que eu não seja tão egoísta e faça isso para todos .
- Nenhum desenvolvedor real, nenhum scripter real disponível.
- Estou pensando nisso há uma semana e nem sei por onde começar.
awk
?find
? Começar a escrever código C novamente? (Não faço isso há mais de 20 anos. Infelizmente, me tornei o que sempre temi: um terno ...) ;-( - Sempre que um novo servidor é adicionado, um diretório deve ser criado automaticamente
- script deve ser executado diariamente
Existe alguém por aí que já resolveu isso para seu próprio servidor / coleção de arquivos de dados e tem um bash
script (C-source?) à mão que eu possa modificar? e se não: dicas úteis, por favor?
Nota 1: Sim, a coisa inteligente a fazer seria os servidores despejarem seus logs em um diretório com o nome do servidor, mas isso é um roll-out, um CAB e outras dores de cabeça, como mobilizar todo o mundo administradores do servidor...
Criando diretórios para cada servidor
o que nós fazemos:
-type f
) no diretório logshare e não em seus subdiretórios (-maxdepth 1
)cut
nós-u
apenas entradas exclusivasMovendo arquivos de acordo
Tentar,