Exclui arquivos com mais de X dias no servidor remoto com SCP / SFTP

4

Alguém sabe alguma maneira boa de excluir arquivos em um servidor remoto com mais de X dias usando somente SCP / SFTP? Claro que posso escrever algum script no perl etc, mas eu sinto que é um exagero. Qualquer maneira UNIX?
Oneliner?
Utilidade separada?

Obrigado

P.S. A tarefa é excluir alguns arquivos de backup desatualizados.

    
por Mike 25.09.2010 / 11:36

3 respostas

2

Essa pergunta é muito antiga, mas eu ainda queria adicionar minha única solução bash, pois estava procurando por uma quando cheguei aqui. O tar do grep no comando listar é apenas para meu próprio propósito listar apenas arquivos tar, pode ser adaptado, é claro.

RESULT='echo "ls -t path/to/old_backups/" | sftp -i ~/.ssh/your_ssh_key [email protected] | grep tar'

i=0
max=7
while read -r line; do
    (( i++ ))
    if (( i > max )); then
        echo "DELETE $i...$line"
        echo "rm $line" | sftp -i ~/.ssh/your_ssh_key [email protected]
    fi
done <<< "$RESULT"

Isso exclui todos os arquivos tar no diretório fornecido, exceto os últimos 7. Não está considerando a data, mas se você tiver apenas um backup por dia, é bom o suficiente.

    
por 15.02.2017 / 22:39
4

Sure I can write some script on perl etc but it's overkill.

Você não precisa de um script para alcançar o efeito pretendido - um one-liner fará se você tiver acesso ao shell para enviar um comando:

ssh user@host 'find /path/to/old_backups/* -mtime +7 -exec rm {} \;'

-mtime +7 corresponde a arquivos criados há uma semana a partir da meia-noite do dia atual.

    
por 25.09.2010 / 14:38
1

Se você insistir em SCP / SFTP, poderá listar arquivos, analisá-los usando um script simples e excluir arquivos de backup antigos.

O modo em lote "-b" deve ajudá-lo. Ele lê os comandos sftp do arquivo. link

    
por 25.09.2010 / 11:51