Назад | Перейти на главную страницу

как удалить старые файлы на ftp с помощью bash

У меня есть резервный 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 команда должна сообщить вам, работает ли расширение имени файла.