17 февраля 2015 г., 17:10 пользователь George L. Yermulnik <[email protected]>
написал:
> Hello!
>
> On Tue, 17 Feb 2015 at 04:34:05 (+0200), Vladislav V. Prodan wrote:
>
> > # 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;
>
> про -delete и xargs уже написали
>
Принято.
>
> я добавлю:
>
> "cd $i || exit" - тут, вероятно, s/exit/continue/ - вряд ли задумано,
> чтобы скрипт отваливался на первой же "сбойнувшей" директории.
>
Именно exit , чтоб rm не сработал. Ибо при первом же сбое, очевидно, и
сразу пойдут другие сбои.
>
> "ls $i | grep snap-\*\.\*\.\*\.jpg" - может быть будет немного быстрее,
> если заменить ls/grep на один find: find $i -type f -name "snap-*.*.*.jpg"
>
Да, надо заменить на find, хотя, в идеале написать на чистом awk, но тут хз
с производительностью.
Я попытался дебажить, и подозреваю, что xargs -I{} -n1 rm {} очень медленно
работает, вызывает раз в секунду rm
Так и хочется многопоточность засунуть, используя & в конце скрипта, но
боюсь, винтам не понравится овер 700 запросов.
>
> "Итого 900 кадров в час" - оно у Вас за сутки со всех камер в одну
> директорию складывается?
У каждой камере своя директория. /home/ - в данном случае, home - имя
камеры.
> Если да, то создавать поддиректории по часам,
> именам камер и т.п., чтобы в одной директории не было слишком много
> файлов.
>
Так и есть:
/backup/AAA/video/home/2014/10/09/00/
тут лежат снимки за 0 час 9 октября 2014 года.
--
Vladislav V. Prodan
System & Network Administrator
support.od.ua