У меня есть резервный ftp-сервер, и у меня есть CRON bash, отправляющий все резервные копии сюда.
Сейчас мне нужно вручную удалить все старые файлы, но я хотел бы автоматизировать этот процесс с помощью CRON bash.
Удаленный FTP не имеет даты в файлах (я не знаю почему), но резервные копии именуются по дате (% Y-% m-% d-% H-% M-% S).
Я думал о перечислении всех файлов в каталоге, сортировке их по имени и удалении всех файлов с индексом> X, но я не знаю, как это сделать
Мой текущий код:
ftp -inv $ftphost << EOF
user $ftpuser $ftppass
put $savepath.bz2 mysql/"$dbname"/"$datum".sql.bz2
bye
EOF
Это решение, безусловно, не является водонепроницаемым, но если ваше задание резервного копирования выполняется ежедневно и вы хотите сохранить резервные копии на 1 месяц, вы можете удалить файл, которому один месяц, примерно так:
old=$(date -d 'now -1 month' +'%Y-%m-%d')
А потом в разделе FTP
mdelete mysql/"$dbname"/"$old"*.sql.bz2
В зависимости от FTP-сервера вам необходимо переключить glob
первый. В mls
команда должна сообщить вам, работает ли расширение имени файла.