Массовое удаление файлов из разных директорий на сервере.

Статус
В этой теме нельзя размещать новые ответы.
если речь идет о файле-списке, то в шеле просто:
Код:
xargs rm < file.txt
имхо, это удобнее и проще, чем держать какой-то специальный скрипт.
Это просто для тех кто знает хотя бы, что означает эта строчка :) Я же лично шел пару раз в жизни видел и для меня это тёмный лес. Тем более, что к шелу скорее всего доступа нет.
 
В вольной транскрипции это будет как-то так:
Превратить строчки в аргументы(xargs) для команды удаления(rm) загрузив(<) из файла(file.txt).

С шеллом стоит познакомиться.
 
У меня тут сломали были акк на джино
и добавили в каждый сайт 2 папки
с вирусами.
Часть удалил а можно ли удалить папки рекурсивно
зная дату и время создания?
 
К manourr... да наверно и ко всем остальным.
Прочел топик. Посмотрел что понял.
Собрал 4 в-та del.php из вышепредложенных.
Ни один не работает :thenks: !

Ниже привожу то что сделал на примере manourr
site.ru/del/del.php
Код:
<?php


$ftp_user_name = 'username';
$ftp_user_pass = 'userpass';
$ftp_server = 'ftp.example.com';


$conn_id=ftp_connect($ftp_server);
$login_result=ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if($login_result) echo 'Connected.<hr><br>';
$pathes=file('files_to_delete.txt');
foreach ($pathes as $path)
{
    $path=trim($path);
    if(ftp_delete($conn_id, $path))
    {
        echo 'Deleted -> '.$path.'<br>';
    }
}
ftp_close($conn_id);
?>

files_to_delete.txt
Код:
ez\1.html
ez\2.html
ez\3.html
ez\index.html
ez\.htaccess
ez\1
ez\3\1.html
ez\3\2.html
ez\3\3.html
ez\3\index.html
ez\3\.htaccess
ez\2
ez\3\1.html
ez\3\2.html
ez\3\3.html
ez\3\index.html
ez\3\.htaccess
ez\3
ez\3\1.html
ez\3\2.html
ez\3\3.html
ez\3\index.html
ez\3\.htaccess
- папочка ez находится в той же директории что и del (site.ru\del\ez\)

Помогите исправить ситуацию!:thenks:

Всем откликнувшимся огромнейшее спасибо!
 
Сначала поставь вначало скрипта такие строчки
PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Это покажет тебе ошибки

Потом посмотри, а абсолютный ли ты путь указываешь к файлам?
там пока до этих файлов доберешься, может вполне быть такой путь
/httpdocs/del/
/www/del/
 
Это покажет тебе ошибки
Потом посмотри, а абсолютный ли ты путь указываешь к файлам?
там пока до этих файлов доберешься, может вполне быть такой путь

Спасибо!
- оба ваших предложения очень помогли!
- первое показало что не так а второе методом тыка 7 путей и все ok!

Если не сложно помогите функцией/способом как к данному скрипту можно добавить удаление директорий?

Еще раз спасибо!
 
*** скрытое содержание ***
Смотрите функцию, описание, коменты к ней =)
Посмотрел... переводчиком попользовался...
Но особо ничего не понял - я не программист.
В коментах нашел нижеследующий пример. Вроде он подходит.
(рекурсивное удаление папок)
Но в том скрипте что в данном топике(удаление из списка *.txt) есть такой параметр как
foreach ($pathes as $path) - как я понимаю он подменяет/уравнивает переменную
$pathes с переменной "путь до файла" и мне кажется где-то тут возникнет путаница.
В самом конце поста привожу то что "собралось" методом не прогроммерского ума... :(
даже не проверял потому как что проверять того чего сам не знаешь понаписал.
Посмотрите пожалуйста. Выскажите мнение.
Немного еще подумав: или нужно сразу указать
$path=file('files_to_delete.txt');
а не
$pathes=file('files_to_delete.txt');
?
Пример функции рекурсивного удалиения папок:
Код:
function ftp_rmdirr($path, $handle)
    {
    if (!(@ftp_rmdir($handle, $path) || @ftp_delete($handle, $path)))
        {
        $list = ftp_nlist($handle, $path);
        if (!empty($list))
            foreach($list as $value)
                ftp_rmdirr($value, $handle);
        }
    @ftp_rmdir($handle, $path);
    }
 

Вложения

  • del22.txt
    751 байт · Просмотры: 0
Вы лучше удалите свой аккаунт к фтп в аттаче ;)
PHP:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$ftp_user_name = '*';
$ftp_user_pass = '*';
$ftp_server    = '*';


if (false === ($conn_id = @ftp_connect($ftp_server))) {
	exit('connect is invalid');
}
if (false === ($login = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass))) {
	exit('login invalid');
}

$pathes = file('files_to_delete.txt');

foreach ($pathes as $path) {
	$path = trim($path);
	ftp_rmdirr($path, $conn_id);
}

ftp_close($conn_id);



function ftp_rmdirr($path, $handle) {
    if (!(@ftp_rmdir($handle, $path) || @ftp_delete($handle, $path)))
        {
        $list = ftp_nlist($handle, $path);
        if (!empty($list))
            foreach($list as $value)
                ftp_rmdirr($value, $handle);
        }
    @ftp_rmdir($handle, $path);
}

?>

как-то так )
 
Мдя.. как можно быть таким дурачиной!
СПАСИБИЩЕ!
Наверно совсем спекся :ah:

Добавлено через 42 минуты
Вы лучше удалите свой аккаунт к фтп в аттаче ;)
как-то так )

Попробовал ваш последний вариант:
Не знаю что происходит - нажал на ентер и "ожидаем ответа от.." и так и висит :(
Сообщений "Connected" или "login invalid" не появляются

Подумал что может что с заходом по фтп. Проверил логины и пасы - все норм.

Попробовал кусочек кода(заход на фтп) из предыдущего в-та - тоже самое.

Пробовал функцию удаления директорий ставить в начале скрипта - :(

АААааа!
(жуть - ничего не понимаю)

Прииер не работает :(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху