495 Views
Tempo de leitura: 2 MinutosOs comandos Find e Rsync são, definitivamente, verdadeiros amigos de todo Sysadmin Linux.
Nesta (curta) semana de feriado prolongado, recorri ao Find e ao Rsync para resolver problemas causados por usuários.
O problema #1:
O primeiro criou uma rotina no Crontab para fazer backup de alguns (muitos) arquivos. Beleza, isso é louvável, apesar de ter alocado seu backup em um path público no Apache. Até aí tudo bem (os backups no path público não são meus, então até aí tudo bem). O problema é que o fileset do backup continha o próprio diretório de backup. Portanto, diariamente, o diretório de backup era incrementado com o backup do dia + ele mesmo, portanto, mais do que dobrava de tamanho diariamente. Começou com +/- 500MB diários. Passou para 1GB, depois para 2GB, depois para 4GB… ao final de alguns meses o backup continha mais de 1 TB de dados (inúteis).
Obs.: Isso não é um backup, ok? É uma cópia de arquivos e cópia de arquivos não é o mesmo que backup. O rapaz foi instruído sobre boas práticas.
A solução:
Cuidado com o comando abaixo. Não vá rodá-lo no local errado
rsync -av --delete diretorio_vazio diretório_backup
Cuidado com o comando acima. Não vá rodá-lo no local errado
Com isso, o diretório vazio é “copiado” para o diretório cheio. Como não há nada dentro dele e por estarmos passando o “–delete”, que apaga do destino o que não existir na origem, e neste caso a origem não possui nada, estou apagando TBs de arquivos.
O problema #2:
O usuário hospedou um diretório com espaços e caracteres especiais. Seria um diretório “página em construção”, mas ficou com “p\341gina\ manuten\347\343o”. Ou seja, o diretório ficou crashado (do verbo crashar).
Os comandos “rm” e “cd” não foram capazes de manipular esse diretório. Quem poderá ajudar? O Find, claro.
A solução:
Cuidado com o comando abaixo. Não vá rodá-lo no local errado
find /home/path-do-usuario/ -maxdepth 1 -iname *manu* -exec rm -rf {} \;
Cuidado com o comando acima. Não vá rodá-lo no local errado
Ou seja, o Find lista apenas os arquivos/diretórios contidos em /home/path-do-usuario/ onde estava o diretório crashado (eu crasho, tu crashas, ele crasha…). Com o “iname” eu pego somente um trecho do nome que não está crashado e então uso “exec” para remover tudo que o Find retornar.
Muito cuidado com esses dois exemplos de Find. Eles são perigosos e pode causar sérios problemas para seus ambientes Linux se usados incorretamente.
Long-Life-Find =)
Forte abraço!