Eu tenho um script bash, criado por alguém que não é mais capaz de explicar o significado, usado para tarar automaticamente uma pasta e fazer backup dela. No momento, estou confuso com a linha final:
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
O script completo está abaixo.
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME=$(date +"%m-%d-%Y-%T")
FILENAME=pokebrawl-$TIME.tar.gz
SRCDIR=/home/servers/brawl/world
DESDIR=/home/_backups/pokebrawl
tar -cpzf $DESDIR/$FILENAME $SRCDIR
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
#END
bash
shell-script
find
MODS Excluir conta
fonte
fonte
Respostas:
O
find
comando excluirá qualquer arquivo regular no/home/_backups/pokebrawl
diretório ou abaixo dele com mais de sete dias (ou mais precisamente, não modificado na última semana).Ele deve provavelmente ler
ou
já que existe uma variável perfeitamente boa mantendo esse nome de diretório. A segunda variação causaria um erro se,
DESDIR
por algum motivo, estivesse vazia ou não definida.Suponho que essa seja uma maneira de manter apenas os backups da semana passada. Eu sugeriria o uso de algo parecido
borgbackup
ourestic
não, pois eles seriam capazes de manter os backups por muito mais tempo sem usar muito mais espaço (mesmo os backups por hora durante um ano não ocupariam muito espaço se os dados não estivessem mudando muito) . Eles fazem a desduplicação de dados eborgbackup
também suportam a compactação (ambos também suportam backups remotos e criptografia).Para executar o script a cada 24 horas (meia-noite), use um trabalho cron.
Primeiro, emita o comando
crontab -e
. Isso abriria um editor com o crontab atual para o usuário ativo (pode ou não ser um arquivo vazio).Então adicione
(onde
path/to/the/script.sh
é o nome do caminho do script).Salve e saia do editor.
O script agora seria chamado à meia-noite, até à noite.
Deseja executar o script às, digamos, 13:30 todas as tardes, adicione o seguinte como a entrada crontab:
Consulte o manual do crontab no seu sistema para obter detalhes sobre como escrever uma programação do crontab (
man 5 crontab
).fonte
find
/delete
operação, caso alguns idiotas se esqueçam de defini-la$DESDIR
ou configurá-la para "/" ou algo do tipo por engano.DESDIR
for alterado e ofind
comando não for atualizado, não será possível limpar o diretório correto. Possivelmente seria útil usar${DESDIR:?Not set correctly}
algo semelhante.Ele localiza todos os arquivos no diretório
/home/_backups/pokebrawl
que não foram modificados nos últimos+6
dias e os exclui. NOTA:+6
equivale a 7 dias.Veja
man find
como essas opções funcionam:Nas distros do Redhat, você pode simplesmente colocar esse script no diretório
/etc/crondaily
e ele será executado todos os dias. Você pode ver que já existem outros scripts que podem ser usados como exemplos:fonte