Script para remover backup

355 views
Skip to first unread message

Marcus Vinicius.

unread,
Jun 13, 2012, 9:14:14 AM6/13/12
to tche...@googlegroups.com
Prezados, bom dia.

Estou com um servidor que preciso liberar espaço no hd externo dele
toda vez que a pasta tiver mais que 100GB, excluindo o arquivo mais
antigo dessa pasta. O backup é feito diariamente e possui apenas dois
arquivos "2012-06-13-aplicacoes.tar.gz" e
"2012-06-13-banco.sql.tar.gz".
Obs: não me dou bem com shellscript (ou vice-versa! rs).


Gostaria que me ajudassem nessa. Agradeço a todos desde já.
Abraços.

--
Att,
Marcus Vinicius.

Alessandro Madruga Correia

unread,
Jun 13, 2012, 9:36:14 AM6/13/12
to tche...@googlegroups.com
Olá,

> Estou com um servidor que preciso liberar espaço no hd externo dele
> toda vez que a pasta tiver mais que 100GB, excluindo o arquivo mais
> antigo dessa pasta. O backup é feito diariamente e possui apenas dois
> arquivos "2012-06-13-aplicacoes.tar.gz" e
> "2012-06-13-banco.sql.tar.gz".
> Obs: não me dou bem com shellscript (ou vice-versa! rs).

Você pode fazer de 2 formas, dependendo de como está teu script de backup...

Usar o date para pegar a data que quer apagar, por exemplo:
date -d "3 days ago" +"%Y/%m/%d"

Ou, usar o find e procurar os arquivos mais antigos que X dias:
find -mtime +3 -print


--
  ,= ,-_-. =.   [<o>] Alessandro Madruga Correia
 ((_/)o o(\_))  [http://counter.li.org]              Ubuntu User# 342751
   `-'(. .)`-'    "O fanatismo é a única forma de força de vontade
        \_/         acessível aos fracos." (Friedrich Nietzsche)

Sérgio

unread,
Jun 13, 2012, 9:50:51 AM6/13/12
to tche...@googlegroups.com
Bom dia Marcus,

O comando find pode filtrar por data e remover arquivos, sugiro uma
leitura no seu manual.

Exemplo:

## Remove arquivos dentro de /backup que não tenham sido modificados a
mais de três dias -- remover o -delete para apenas imprimir o nome dos
arquivos
find /backup -mtime +3 -print -delete

Abraço,
Sérgio
> --
> Mensagem enviada para <http://groups.google.com/group/tchelinux>.
> Regras de Conduta para o grupo: <http://tchelinux.org/regras>.

Sérgio

unread,
Jun 13, 2012, 9:52:06 AM6/13/12
to tche...@googlegroups.com
Esqueci de uma coisa importante.

CUIDADO: O find é recursivo, então verifique no manual como controlar
o nível de recursão, caso necessário.

Abraço,
Sérgio

Marcus Vinicius.

unread,
Jun 13, 2012, 11:04:02 AM6/13/12
to tche...@googlegroups.com
Na verdade, eu estou começando um script do zero já que o anterior
tinha um "find /backup -name "*.tar.gz" -mtime +45 -exec rm {} \;",
mas ele não me atendia porque, às vezes, ele não fazia backup e
passava-se um dia sem backup e eu perdia o primeiro criado sem ao
menos ter um recente.

Eu quero que ele veja no diretório /backup se existem 45 arquivos (no
caso, um pra cada dia) e que eles não sejam zerados pra, aí sim,
deletar o mais antigo de todos.
--
Att,
Marcus Vinicius.

Fabio Olive Leite

unread,
Jun 13, 2012, 11:35:19 AM6/13/12
to tche...@googlegroups.com
Opa!

On 2012-06-13 Marcus Vinicius. wrote:
>
> Eu quero que ele veja no diretório /backup se existem 45 arquivos (no
> caso, um pra cada dia) e que eles não sejam zerados pra, aí sim,
> deletar o mais antigo de todos.

O comando ls tem a opção "t" pra ordenar os arquivos pela data/hora da
última modificação. Podes combinar isso com tail pra facilmente pegar o
nome do arquivo mais antigo. Algo como o abaixo:

#!/bin/sh

cd /backup
MAISVELHO=$(ls -t | tail -1)
OCUPADO=$(df -k . | awk '/^\// { print $3 }')
if [ $OCUPADO -gt 100000000 ]; then
(ls -l $MAISVELHO; rm -fv $MAISVELHO) \
| mail -s "Limpeza do backup" root
fi

Não testei isso, mas deve funcionar, e mandar email pro root avisando o
que apagou. :) Bota no cron pra rodar diariamente e boa sorte!

Na verdade poderia ser um while, apagando os mais velhos até que o
espaço liberado seja suficiente. Mas fica o exemplo pra tu começar. :)

Fábio Olivé
--
[[ Fábio Olivé Leite, olive, FabioOlive ]]
TcheLinux.org, OeSC-Livre.org, Chapecó, SC
ex sed lex awk yacc, e pluribus unix, amem
Reply all
Reply to author
Forward
0 new messages