Нужно удалить много фоток на сервере - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB88.6852
BTC/USD67950.2124
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 11.04.2017, 15:53
Start Post: Нужно удалить много фоток на сервере 
  #11
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
По умолчанию

Привет.
На сервере (линукс) есть примерно в одной папке 1.500.000 фоток, есть тхт с названием около 100.000 фоток, которые нужно удалить.

Нужно было бы удалить 10 фоток, удалил бы без проблем сам через ssh.

А так спрошу, может кто сталкивался с подобным?

Спасибо!
lebaol вне форума  
Старый 12.04.2017, 05:52   #12
voloshin
Member
 
Регистрация: 28.02.2017
Сообщений: 85
Бабло: $19440
По умолчанию

Не всё - значит пути некорректные внутри файла.
Или файла уже нет такого. Могу доработать, чтобы проверял, что файл существует и не генерировал ошибки.
Код:
<?php
  $files = Array ('dir2/1.txt', 'dir2/xz.txt');
  foreach ($files as $file) {
    $is = file ($file);
    foreach ($is as $i) {
     if (file_exists ($i)) {
       unlink ($i);
      }
    }
  }
?>
voloshin вне форума  
Старый 12.04.2017, 09:48   #13
apophis
Senior Member
 
Регистрация: 05.01.2010
Сообщений: 125
Бабло: $24953
По умолчанию

Удаляет большие кол-ва файлов (миллионы) с минимальной нагрузкой:
Цитата:
perl -e 'chdir "/patch/to/dir/" or die; opendir D, "."; while ($n = readdir D) {$i++; unlink $n; echo $i; }’
Второй вариант:

Удаляет по 100 файлов в секунду для минимизации нагрузки на винт и CPU:
Цитата:
cd /patch/to/dir/; while [ true ]; do ls -UA -1 . | head -n 100 | xargs rm -f 2>/dev/null; sleep 1; done
apophis вне форума  
Старый 12.04.2017, 10:35   #14
Reset
Member
 
Регистрация: 26.08.2008
Сообщений: 41
Бабло: $6330
Отправить сообщение для Reset с помощью ICQ
По умолчанию

Я 740.000 фоток удалил через SSH, минут за 5-10

Код:
find . -type f -delete
Reset вне форума  
Старый 12.04.2017, 11:49   #15
oxenus
Senior Member
 
Регистрация: 03.08.2007
Сообщений: 167
Бабло: $23060
По умолчанию

unlink ($i); - Заменить на unlink(trim($i));

Так как file - закидывает в массив с "переносом строчек"
Из-за этого и появляется ошибка с невозможностью удаления.

Цитата:
Сообщение от voloshin Посмотреть сообщение
Принципиально через шелл?PHP скрипт нельзя использовать?

Код:
<?php
  $files = Array ('dir2/1.txt', 'dir2/xz.txt');
  foreach ($files as $file) {
    $is = file ($file);
    foreach ($is as $i) {
      unlink ($i);
    }
  }
?>
В файлах полные пути до картинок относительно скрипта.
Файлов можешь добавить сколько угодно.
oxenus вне форума  
Старый 12.04.2017, 11:57   #16
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,884
Бабло: $1863625
По умолчанию

Цитата:
Сообщение от Reset Посмотреть сообщение
Я 740.000 фоток удалил через SSH, минут за 5-10

Код:
find . -type f -delete
ебать ты высокий
веломан вне форума  
Старый 12.04.2017, 15:41   #17
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от oxenus Посмотреть сообщение
unlink ($i); - Заменить на unlink(trim($i));

Так как file - закидывает в массив с "переносом строчек"
Из-за этого и появляется ошибка с невозможностью удаления.

Цитата:
Сообщение от voloshin Посмотреть сообщение
Принципиально через шелл?PHP скрипт нельзя использовать?

Код:
<?php
  $files = Array ('dir2/1.txt', 'dir2/xz.txt');
  foreach ($files as $file) {
    $is = file ($file);
    foreach ($is as $i) {
      unlink ($i);
    }
  }
?>
В файлах полные пути до картинок относительно скрипта.
Файлов можешь добавить сколько угодно.
Спасибо большое, помогло, а как можна вывод сделать того, что удалилось?
Тоесть вывод не того, что не нашло, а что именно было удалено?
lebaol вне форума  
Старый 12.04.2017, 15:48   #18
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,884
Бабло: $1863625
По умолчанию

PHP код:
<?php
$a 
= array();
  
$files = Array ('dir2/1.txt''dir2/xz.txt');
  foreach (
$files as $file) {
    
$is file ($file);
    foreach (
$is as $i) {
      if (
unlink ($i)) {$a[] = $i;}
    }
  }

var_export($a);
?>
веломан вне форума  
Старый 12.04.2017, 16:01   #19
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от веломан Посмотреть сообщение
PHP код:
<?php
$a 
= array();
  
$files = Array ('dir2/1.txt''dir2/xz.txt');
  foreach (
$files as $file) {
    
$is file ($file);
    foreach (
$is as $i) {
      if (
unlink ($i)) {$a[] = $i;}
    }
  }

var_export($a);
?>
а как с этим быть?

Цитата:
Сообщение от oxenus Посмотреть сообщение
unlink ($i); - Заменить на unlink(trim($i));
спасибо
lebaol вне форума  
Старый 12.04.2017, 18:21   #20
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,884
Бабло: $1863625
По умолчанию

так и быть
веломан вне форума  
Старый 13.04.2017, 21:34   #21
lebaol
Member
 
Регистрация: 14.06.2015
Сообщений: 84
Бабло: $17870
ТС -->
автор темы ТС По умолчанию

а если в тхт результат нужно еще записать, то что тут поправить нужно, чтобы нормально работало:

PHP код:
<?php
$file 
'output.txt';
$a = array();
  
$files = Array ('/1.txt');
  foreach (
$files as $file) {
    
$is file ($file);
    foreach (
$is as $i) {
      if (
unlink(trim($i))) {$a[] = $i;}
    }
  }

var_export($a);
file_put_contents($file$a);
?>
? не записывает в output.txt этот мой вариант, что выше.

спасибо большое!
lebaol вне форума