LinuxForum.Fans
Тема

Удаление файлов по именам

Автор: tamahcki 5 сообщений 1026 просмотров
07.08.2019 18:17 #432546

Есть доступ до хранилища куда складываются логи, дампы и етц.
Формата к примеру дампов такой

ozonshop_db_db-08-07-2019-04-00-01.sql.gz

префикс-день-месяц-год-час-минута-секунда.расширение

Вопрос как можно удалять данные файлы ? Была идея как то выносить в массив имена файлов в директории, далее отрезать часть не имеющую отношения к дате, сортировать новый список, и потом удалять что старше 5 дней.
Но сортировка пока не получается. Вообще нету идей как ее сделать.

стороние утилиты по типу logrotate и так далее использовать НЕЛЬЯ - там(на мифическом хранилище) негде ставить.

07.08.2019 18:30 #432549

tamahcki, [url=linux-notes.org/kak-najti-i-udalit-fajly-starshe-konkretnoj-daty-v-linux/]Google работает за нас[/url]

07.08.2019 18:34 · отредактировано #432551

Хех)))

В том то и дело что по дате файлов ( свойства файлов ) нельзя, за 1 подход может выволиться на сервер по 100 файлов, у всех будет 1 дата создания, но разные имена.

Потому и думаю как парсить именя файлов и удалять по ним. 8)

К примеру -

-rw-r--r-- 1 oracle oinstall 0 Aug 7 16:10 ozonshop_db_db-08-02-2019-04-00-01.sql.gz

-rw-r--r-- 1 oracle oinstall 0 Aug 7 16:10 ozonshop_db_db-08-07-2019-04-00-01.sql.gz

07.08.2019 20:36 #432552

Распарсить дату из имени файла в POSIX-формат

text
date -d "$($FILENAME | awk -F "-" '{print $3$2$4}')" +%s)

Получить POSIX дату за минусом 4-х суток от текущей

text
UTIME=$(expr $(date +%s) - 345600)

А дальше тупым сравнением [[Если дата файла меньше или равно $UTIME]] то делаем rm file

07.08.2019 21:34 #432553

Получить в секундах время файла:

text
date -d "$(echo ozonshop_db_db-08-02-2019-04-00-01.sql.gz|awk -F "-" '{print $3"/"$2"/"$4" "$5":"$6}') " +%s

Получить текущее время в секундах:

text
date -u +%s

А дальше уже думать...

Войдите или зарегистрируйтесь, чтобы ответить.