Для тех, кто не спит!
Скидка -15%
Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Панель управления
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307  Горячая линия
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

Хостинг. Удаление некоторых файлов из заданной папки


tgr_85
2 года
0
Удаление некоторых файлов из заданной папки

Здравствуйте.
Связка Joomla+K2 генерирует кучу ненужных картинок к статьям и скидывает их все в одну папку.
Подскажите, пожалуйста, способ, чтобы средствами хостинга (может скрипт какой-то) удалить неиспользуемые картинки из заданной папки.
Известно путь к папке, и что все неиспользуемые файлы заканчиваются, к примеру, на _XL.jpg
Файлов картинок несколько тыс., из них ненужных примерно половина. Поэтому вручную править не вариант.
Буду очень благодарен, если кто-нибудь поделится решением.

Сергей М.
2 года
1

Самое простое что приходит в голову - добавить в крон задачу
/usr/bin/rm -rf /home/имя хостинг аккаунта/путь к директории/*_XL.jpg

tgr_85
2 года
0

Спасибо!
Попробую и отпишусь завтра.

tgr_85
2 года
0

Пишет такое:
nice: /usr/bin/rm: No such file or directory
Код получился такой:
/usr/bin/rm -rf /home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg
Может www не надо?
Еще на одном форуме подсказали сделать и запустить такой php файл:

<?php

function udoli($dirname)
{
    $files = glob($dirname . '/*', GLOB_MARK);

    foreach ($files as $file) {

        if (substr($file, -1) == '/') {
            udoli($file);
        } else {
            if (preg_match('#XS.jpg#Usi', $file, $est))
                unlink($file);
        }
    }
}
udoli('/путь/к/папке');
?>

Правда я пока не понял, как его запустить...

zinenko_s
2 года
2

/usr/bin/rm -rf /home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg
Может www не надо?
© tgr_85

Попробуйте указать просто команду так rm -rf /home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg

Еще на одном форуме подсказали сделать и запустить такой php файл: © tgr_85

Можно сделать скрипт куда проще, к примеру так
<?php
$path = "/home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg";
shell_exec("rm -rf $path");
?>
При этом можно задать дополнительные параметры отбора файлов и управлять какими либо масками.
И потом можно создать обычную крон задачу и поставить ее выполнение раз в сутки указав этот скрипт или же открыв скрипт в браузере то есть к примеру скрипт будет в /home/имя хостинг аккаунта/домен/www/delete.php то его запуск можно произвести просто открыв в браузере домен/delete.php
Так же можно использовать такого способа команды для удаления файла которые существуют более указанного срока, пример на срок жизни файлов более двух суток с даты last modified
find /home/имя хостинг аккаунта/путь к директории/ -type f -name "*_XL.jpg" -mtime +2 -exec rm -rf {} \;
детальное описание команд Вы можете получить при помощи такого сервиса как explainshell.com - match command-line arguments to their help text (вот ссылка на описание вышеуказанной команды explainshell.com - find /home/имя хостинг аккаунта/путь к директории/ -type f -name "*_XL.jpg" -mtime +2 -exec rm -rf {} \\; )

Сергей М.
2 года
2

Пишет такое:
nice: /usr/bin/rm: No such file or directory
Код получился такой:
/usr/bin/rm -rf /home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg
© tgr_85

Попробуйте заменить путь к исполняемому файлу на /bin/rm
/bin/rm -rf /home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg
Посмотреть путь к исполняемым файлам можно командой
# command -v "rm"
/bin/rm

tgr_85
2 года
1

Сработал скрипт:

<?php
$path = "/home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg";
shell_exec("rm -rf $path");
?>

И крон:
/bin/rm -rf /home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg

Всем спасибо большое!

Natali.host
6 дней
0

<?php
$path = "/home/имя хостинг аккаунта/домен/www/путь к директории/*_XS.jpg";
shell_exec("rm -rf $path");
?>
Этот скрипт можно юзать не только к определенным файлам но и к директориям?

zinenko_s
6 дней
0

Если Вам нужна периодическая очистка каталога, то лучше воспользоваться инструкцией по созданию крон задачи для очистки каталога 2.11.9. Автоматическая очистка каталога [Хостинг Украина]

Natali.host
6 дней
0

Ок как быть если будет закрыт shell_exec?

zinenko_s
6 дней
0

Не стоит решать такую задачу средствами php, так как куда проще создать крон задачу которая будет работать быстрее и лучше.
Если же, все таки, требуется использование php скрипта, к примеру для создания сложной логики очистки каталогов и прочее, но при этом закрыты все функции вызова системных команд (shell_exec\exec\system\proc_open\etc), то лучше использовать функцию PHP unlink() PHP: unlink - Manual , к примеру таким образом можно задать удаление файлов в каталоге:

$path = "/home/user/domain.com/www/dir/";

if (file_exists($path)) {
      foreach (glob("$path*_XS.jpg") as $file) {
          unlink($file);
      }
}

Вместо '_XS.jpg' укажите нужный тип файла или часть его имени. Но этот код не удалит каталог, для этого его нужно будет усложнить т.к. PHP не может удалить не пустой каталог.
А какая именно задача у Вас стоит?

Участвовать в общении на этом форуме могут только зарегистрированные пользователи.