Удаление старых файлов на USB HDD

Post new topic   Reply to topic    DD-WRT Forum Forum Index -> Использование и установка DD-WRT
Author Message
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Wed Jul 19, 2017 13:29    Post subject: Удаление старых файлов на USB HDD Reply with quote
Доброго времени суток!

Перепрошил роутер Dlink Dir-320.
Прошивка: DD-WRT v24-sp2 (08/12/10) mini-usb-ftp
По инструкции http://www.dd-wrt.com/wiki/index.php/Установка_Samba_на_маршрутизатор_с_DD-WRT
подключил и настроил сетевой жёсткий диск, подключенный через USB. Использую диск для хранения роликов с уличной IP-камеры Dahua H2.65 IPC-HFW4431R-Z. У этой и подобной камер есть проблема - при правильной настройке удаления старых файлов, удаления не происходит. Решил заставить роутер ежедневно удалять старые файлы.
Попробовал (как через telnet, так и в веб-интерфейсе роутера в меню "Команды") запустить следующую команду:
find /mmc/CamZoom/ -type f -mtime +10 -exec rm -rf {} \;
Секунд 5 что-то делается, но результата нет. Пробовал укоротить команду до:
find /mmc/CamZoom/ -type f -mtime +10
- выходит окно с перечнем найденных файлов. А вот удалить не получается.
Подскажите пож-та, что нужно сделать?
И не пробовал пока crontab, а будет ли он работать в этой прошивке? Подскажите пож-та, как правильно настроить?
Спасибо!
Sponsor
vasek00
DD-WRT Guru


Joined: 06 Nov 2010
Posts: 3305

PostPosted: Thu Jul 20, 2017 5:16    Post subject: Re: Удаление старых файлов на USB HDD Reply with quote
Для начала поднять релиз, до 2017года, потом попробовать попроще с начала одной командой "rm -f" или "rm -r".
Обычно камеры пишут создав каталог на основе времени и даты, если все в один каталог то название файла опять же обычно дата и время.
Я делал проще - каждый день велся файл - в котором на основании пунктов выше лежали просто даты дней - data-cur:
20170717
20170718
20170719
20170720
данные строки были в именах файлах или каталогах, скрипт брал первую строчку и удалял "rm -f /...../*20170717*.*" потом правил файл data-cur удалив первую запись (уменьшив кол-во дней) 20170717.
Если нужно было привести даты к одинаковому виду до делалась модернизация командой data, т.е. каждый день читалась текущая преобразовывалась в нужную для камер и записывалась в data-cur в нужном для камер виде.

Cron работает.

Проверка релиза http://www.dd-wrt.com/phpBB2/viewtopic.php?t=260526
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Fri Jul 21, 2017 17:55    Post subject: Reply with quote
Спасибо за отклик!
Посмотрел что предлагается из прошивок для моего роутера и с сожалением обнаружил, что старые прошивки убрали, а в чуть более новых нет функции ftp. Поэтому поднять не получится.
По отдельности rm работает. find тоже нужное находит. А вот команда удаления найденного find-ом не срабатывает. Т.е. похоже не воспринимаются последние символы в строке
{} \;.
У меня такое впечатление, что синтаксис команды find в данной прошивке отличается от обычного. Но команда find -help остаётся без ответа, видимо ввиду урезанности прошивки.
Либо памяти у роутера слишком мало для исполнения больших команд?
А можно как-то разбить эту команду на две? Можно ли присвоить результат команды find какой-нибудь переменной, а потом подстановкой выполнить отдельную команду rm ?
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Sat Jul 22, 2017 3:49    Post subject: Reply with quote
Попробовал на работе по telnet зайти в терминале на Synology DiskStation DS110J. Обнаружил похожую проблему. В busybox 1.1.0 команда find ведёт себя аналогично. Вывод найденного делает, а команду rm не исполняет.
Вывод команды find -help супер краток.
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Sat Jul 22, 2017 6:38    Post subject: Reply with quote
Нашёл на просторах интернета. Smile

find /mmc/CamZoom/ -type f -mtime +10| xargs rm -rf{}\;
find /mmc/CamZoom/ -type d -mtime +10| xargs rm -rf{}\;

Осталось cron настроить.
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Sun Jul 23, 2017 5:58    Post subject: Reply with quote
Доброго дня!

Новая проблема вроде бы и на пустом месте.

Вставил в веб-интерфейсе в меню Тех.обслуживание/Управление в окошке крона свои две команды.
Проверил - не выполняются.
Оказалось - при сохранении команд в конце команды почему-то меняется наклонная черта на апостроф. Вписываю одно, а после сохранения в окне крона вижу другое.
Попробовал идти в обход. Сделал пользовательский скрипт в меню "Команды", а его выполнение вписал в окно крона. Сам скрипт рабочий - пробовал запускать его вручную в том же меню Команды.
Но крон его не исполняет, подозреваю, что по той же причине - сам меняет наклонную черту на апостроф.
Что можно сделать?
Буду благодарен за советы.
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Mon Jul 24, 2017 3:44    Post subject: Reply with quote
Решено.
В итоге помогло добавление в конце команд в скрипте выражения
2>/dev/null
Используя окно скрипта в веб-интерфейсе в меню Тех.обслуживание/команды, вставил это выражение в обе команды скрипта, а для гарантии ещё и в команду запуска скрипта в кроне. После этого в заданное время удалились и файлы, и директории старше заданного значения 5 дней.

Содержимое скрипта:

find /mmc/CamZoom/ -type f -mtime +5| xargs rm -rf {} \; 2>/dev/null
find /mmc/CamZoom/ -type d -mtime +5| xargs rm -rf {} \; 2>/dev/null

Команда запуска скрипта в окне крона в меню Тех.обслуживание/установка :
45 23 * * * sh /tmp/custom.sh 2>/dev/null

Заметил также, что реально содержимое скрипта /tmp/*custom.sh и файла /tmp/cron.d/cron_jobs меняются только после перезагрузки роутера. Нажать кнопку сохранения недостаточно. В меню Тех.обслуживание/установка есть кнопка перезагрузки.
Всем спасибо за внимание!
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Tue Dec 18, 2018 7:18    Post subject: Reply with quote
Доброго времени суток!
Недавно обратил внимание на проблему с работой команды find , а именно - в заданной директории она находит не только все директории с устаревшей датой, но и саму заданную для поиска директорию.
В итоге команда удаления старых директорий

find /mmc/CamZoom/3A00F52PAA00495 -type d -mtime +5| xargs rm -rf {} \; 2>/dev/null

удаляет полностью всю заданную для поиска директорию, вместо удаления только найденных в нём старых директорий.

Вывод команды find без удаления:

~ # find /mmc/CamZoom/3A00F52PAA00495 -type d -mtime +10
/mmc/CamZoom/3A00F52PAA00495
/mmc/CamZoom/3A00F52PAA00495/2018-12-07
/mmc/CamZoom/3A00F52PAA00495/2018-12-07/001

Вопрос: как исключить из результатов поиска саму директорию поиска?
Спасибо.
ser_kondr
DD-WRT Novice


Joined: 19 Jul 2017
Posts: 23

PostPosted: Tue Dec 18, 2018 12:03    Post subject: Reply with quote
Сам себе и отвечу.
Поскольку не знаю правильный ответ, приспособил "костыль" - указал команде find на область поиска с начальными символами внутренних директорий.

find /mmc/CamZoom/3A00F52PAA00495/20????????/ -type d -mtime +10| xargs rm -rf {} \; 2>/dev/null

Просто у меня все эти директории начинаются на 2018, вот я и выбрал 20, а остальное - любое, т.е. - вопр.знаками.
В итоге теперь find основную директорию поиска не включает в результаты поиска. Посмотрим с утра, как будет стирать файлы по факту через крон.
Но если кто подскажет грамотное решение с командой find, буду весьма благодарен.
Display posts from previous:    Page 1 of 1
Post new topic   Reply to topic    DD-WRT Forum Forum Index -> Использование и установка DD-WRT All times are GMT

Navigation

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum