Очистка upload по cron

скрипт удаляющий ненужные файлы и пустые папки

#16 20 сентября 2019 в 14:09
/usr/bin/perl /home/******/web/******.ru/public_html/upload/cron_cleaner.pl.php
Can't locate DB_File.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/******/web/******.ru/public_html/upload/cron_cleaner.pl.php line 23.
BEGIN failed--compilation aborted at /home/******/web/******.ru/public_html/upload/cron_cleaner.pl.php line 23.
#17 20 сентября 2019 в 14:28


Can't locate DB_File.pm

Ris
Странно, ваще оно должно из коробки идти
yum install perl-DB_File
#18 20 сентября 2019 в 14:32


Но тегов нет:

Rainbow
Я сделал по расширениям jpg, gif, png
проверьте пожалуйста, перезалил cron_cleaner-v7.59.zip
#19 20 сентября 2019 в 14:41
Загрузил в комментариях несколько картинок, но добавлять сами комментарии не стал. Повисло несколько ненужных файлов.
/usr/bin/perl /home/******/web/******.ru/public_html/upload/cron_cleaner.pl.php
ok

Скрипт отработал. Увы, специально созданные ненужные файлы остались на месте...

проверьте пожалуйста, перезалил cron_cleaner_v2.zip

@fazer
Не помогло.
#20 20 сентября 2019 в 14:46


Не помогло.

Ris
не не, вы тестовый режим выключили? :)
в файле cleaner_files.txt есть упоминание об этих файлах?
error есть?
#21 20 сентября 2019 в 15:07

не не, вы тестовый режим выключили? :)

@fazer
Выключил, файлы удалились.
Появилось четыре текстовых файла с логами. Из консоли всё работает хорошо.

С хроном всё хуже...
Cron <******@******> root /usr/bin/perl /home/******/web/******.ru/public_html/upload/cron_cleaner.pl.php >> /var/log/syslog 2>&1
/bin/sh: /var/log/syslog: Permission denied
#22 20 сентября 2019 в 15:29


/bin/sh: /var/log/syslog: Permission denied

Ris
попробуйте без сислога, он вобщем то не очень и нужен
root /usr/bin/perl /home/******/web/******.ru/public_html/upload/cron_cleaner.pl.php > /dev/null 2>&1
#23 20 сентября 2019 в 16:35

ЗЫ: вобщем проблема такая есть, а уж как решить её…
Я предложил, но не знаю насколько реализуемо.

Rainbow
Чет я втупил :),
если вот так прописать
  1. my $upload = '000/u1/0'; # папка которую сканируем
то будет сканироваться только 000/u1/0,
а если оставить сканирование на 000/u1 то можно создав папку u2 класть в неё всё что точно не попадет под удаление

может это вас спасет :)
#24 20 сентября 2019 в 18:12

то будет сканироваться только 000/u1/0

@fazer

Так не пойдет. Все эти папки генерируются случайным образом (если не ошибаюсь).
И вычислить где и что у кого находится не получится ( вычислить можно, но может совпасть нужное с не нужным).

Собственно искать в папке upload/000/ предложил Ris (в его компоненте) я.
Раньше его компонент искал в upload/ и сносил картинки виджетов тоже.

upload/000/ совпадает у всех, а вот глубже, все идет в случайном порядке и не факт что (как писал выше) не совпадет нужное с не нужным.

Так что, если получится по расширениям, возможно будет правильный вариант (расширения можно добавить еще у кого есть другие).

и да...
попробовал на локальном (OSPanel) не получилось:


5. Можно сразу жмякнуть на скрипт(если он сделан "исполняемым" или так: perl cron_cleaner.pl.php),
если всё норм — он отработает и будут логи

@fazer
scratch

Может не так делаю… Я пытался открыть в браузере этот файл…
#25 20 сентября 2019 в 21:55

Насколько понимаю в отличии от чистильщика от Ris, должна быть меньше нагрузка на сервер.

Rainbow
Увы, чуда не произошло.
Сделал на тестовом сервере копию рабочего сайта. Страртанул скрипт. Четыре минуты думало. Точно также заткнулось на большой таблице в миллион строк.
[root@****** public_html]# /usr/bin/perl /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
DBD::mysql::st execute failed: MySQL server has gone away at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 80, <CONF> line 71.
DBD::mysql::st fetchrow_array failed: fetch() without execute() at /home/******/web/sub.******.ru/public_html/upload/cron_cleaner.pl.php line 81, <CONF> line 71.
ok
[root@****** public_html]#
#26 21 сентября 2019 в 08:28

Так что, если получится по расширениям, возможно будет правильный вариант (расширения можно добавить еще у кого есть другие).

Rainbow
получилось ещё вчера )

Я пытался открыть в браузере этот файл...

Rainbow
Нет,
скрипт исключительно консольный, если нет доступа к консоли — то только по cron
#27 21 сентября 2019 в 08:37

Увы, чуда не произошло.

Ris
Попробуем другую магию ?
протестируйте плз обновленный скрипт cron_cleaner-v7.59.zip (не забудьте выкл testmode)
если не прокатит, то могли бы вы показать вывод mysql команд из консоли
  1. mysql -uвашюзер -p'вашпароль'
  2. select @@global.max_allowed_packet;
  3. show variables like "wait_timeout";
  4. show variables like "interactive_timeout";
#28 21 сентября 2019 в 10:18

то могли бы вы показать вывод mysql команд из консоли

@fazer
Welcome to the MariaDB monitor. Commands end with; or \g.
Your MariaDB connection id is 1878
Server version: 10.4.7-MariaDB MariaDB Server

Copyright © 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select @@global.max_allowed_packet;
+-----------------------------+
| @@global.max_allowed_packet |
+-----------------------------+
| 1048576 |
+-----------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> show variables like "wait_timeout";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 50 |
+---------------+-------+
1 row in set (0.001 sec)

MariaDB [(none)]> show variables like "interactive_timeout";
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| interactive_timeout | 50 |
+---------------------+-------+
1 row in set (0.001 sec)
Стандартные настройки VestaCP. Ничего не менял.

протестируйте плз обновленный скрипт cron_cleaner_v3.1.zip (не забудьте выкл testmode)

@fazer
Сейчас протестирую.
-----------------------------------------------------------------------------------------------
На этот раз всё без ошибок 2 минуты. 635 файлов найдено.
Сейчас сравню результат с анфайндером.
unfinder: Найдено лишних файлов: 58
#29 21 сентября 2019 в 16:02

@@global.max_allowed_packet |
+-----------------------------+
| 1048576 |
+-----------------------------+

Ris
10мб, маловато в стандартной поставке обычно 16мб,
коли вы оперируете миллионными базами думаю стоит добавить

+---------------+-------+
| wait_timeout | 50 |
+---------------+-------+

Ris
Это ваще жуть… в стандарте 8 часов а у вас 50 сек )))


unfinder: Найдено лишних файлов: 58

Ris
всмысле ваш нашел больше не используемых? и на самом деле они действительно лишние?
просто как бы мой скрипт не может выдумать отсутствие записи в базе…
а папки он не может не пропустить ни удалить если они не пустые...

и кстати у меня есть доп поле поиска относительно ваших wm_image
#30 21 сентября 2019 в 16:24

всмысле ваш нашел больше не используемых ?

@fazer
Нет, я не отключал тестовый режим.
Просто Rainbow считает, что все картинки лежат в 000. В моем случае это не так (сайт переносился с первой ветки на 2.7.2)
Изменил в unfinder папку сканирования файлов и нашлось 15000 лишних.

и кстати у меня есть доп поле поиска относительно ваших wm_image

@fazer
Всё же настраивается. Можно добавить какие угодно поля.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.