Я бы предложил вам другие пути :)

1. изображения сохраняются в /zfs/temp-path-1/yyyymmdd
раз в сутки (или как вам нужно часто) вы делаете копирование каждого пятого
файла в /zfs/real-store-path
и по истечению суток можно удалить директорию старых суток

2. если вам не принципиально чтобы был именно каждый пятый согласно
нумерации, а просто приближение - то есть просто брать 20% изображений, то
можно поиграться с кроном - дёргать каждые несколько минут/часов и делать
не полный find, а
find -Bnewer stampfile ; .... ; touch stampfile;
Тогда будет полегче.


17 февраля 2015 г., 9:59 пользователь Sergey Rudenko <[email protected]>
написал:

>
>
> 17.02.2015 04:34, Vladislav V. Prodan пишет:
> > Имеем хранилище изображений с камер на ZFS. Изображения сохраняются
> каждые
> > 15 секунд.
> > Нужно периодически прореживать, оставлять каждое 5-е изображение
> >
> >
> > Скрипт работает примерно около суток. Хочется, побыстрее.
> >
> > Благодарю за мнения и помощь.
> >
> > #!/bin/sh
> >
> > dir=/backup/AAA/video/home/2014/09/
> >
> > #exit
> >
> > # delete all video
> > find $dir -type f -name "*.mp4" -o -name "*.avi"   -exec rm -rf {} \;
> >
> >
> > # leave every fifth file, and the rest - remove
> > for i in `find $dir -type d`
> > do
> >     cd $i || exit;
> >     ls $i | grep snap-\*\.\*\.\*\.jpg | awk 'NR%5!=1' | xargs -I{} -n1
> rm {}
> > done;
> >
> >
> >
>
> Не знаю будет ли это быстрее, но можно попробовать сделать так
> Изображения вероятно нумеруются либо дата-номер либо таймстамп
> Можно считывать самое старое изображение и по циклу удалять каждые +5
> изображений, увеличивать счётчик на 5 и далее по циклу.
>



-- 
Regards,
Alexander Yerenkow

Ответить