#CURTAS > Semana do Find e do Rsync

Os 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!

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.