como deletar arquivos antigos no ftp com o bash

2

Eu tenho um servidor ftp de backup e eu tenho um CRON bash enviando todos os backups aqui.

Agora eu tenho que excluir manualmente todos os arquivos antigos, mas eu gostaria de automatizar este processo com um CRON bash

O FTP remoto não tem data em arquivos (não sei por quê), mas os backups são nomeados por data (% Y-% m-% d-% H-% M-% S).

Eu pensei em listar todos os arquivos no diretório, classificando-os pelo nome e excluindo todos os arquivos com índice > X, mas eu não sei como fazer isso

Meu código atual é:

ftp -inv $ftphost << EOF
user $ftpuser $ftppass
put $savepath.bz2 mysql/"$dbname"/"$datum".sql.bz2
bye
EOF
    
por Bouki 30.10.2015 / 10:59

1 resposta

1

Esta solução certamente não é à prova d'água, mas se a sua tarefa de backup for executada diariamente e você quiser manter um mês de backups, poderá excluir o arquivo que tem um mês de idade com algo como:

old=$(date -d 'now -1 month' +'%Y-%m-%d')

E, em seguida, na seção de FTP

mdelete mysql/"$dbname"/"$old"*.sql.bz2

Dependendo do servidor FTP, você precisará alternar glob primeiro. O comando mls deve informar se a expansão do nome do arquivo funciona ou não.

    
por 30.10.2015 / 21:19

Tags