2016-04-27 13 views
1

Eine Freundin von mir hat mich gebeten, bei der Reinigung ihres cPanel-Kontos mitzuhelfen, weil sie sich mit Malware infiziert hat. Ich habe mich bei cPanel angemeldet und der integrierte Dateimanager ist nach ein paar Minuten abgestürzt, weil diese Malware 100.000 Ordner erstellt hat und sie nicht einmal verarbeitet werden konnte. Einige davon sind leer, die anderen enthalten ein paar schädliche PHP-Dateien. Diese Ordnernamen sind nur Zahlen (zum Beispiel: 1979190). Ich habe versucht, sie über FTP zu löschen, aber es ist einfach keine Option. Mein FTP-Client kann immer nur 10.000 Ordner anzeigen. Ich habe versucht, diese zu löschen, aber 2 Stunden später löscht es immer noch die Ordner mit der ersten Nummernfolge (1 ******) und die letzten Ordner beginnen mit Nummer 9.Wie Tausende Ordner automatisch aus dem Ordner public_html gelöscht werden?

Leider gibt es keinen SSH-Zugang für dieses Konto . Ich habe den Support auch kontaktiert, aber sie werden nicht helfen (sie wollen, dass wir $ 100 bezahlen, bevor sie einen Shell-Befehl ausführen können)

Also meine Frage ist: Was ist der beste Weg, all diese zu löschen Ordner aus dem Verzeichnis public_html? Gibt es ein PHP-Skript, das helfen könnte? Vielleicht etwas, das alle Ordner löschen könnte, wo der Ordnername nur Zahlen ist?

Jede Idee könnte helfen! Vielen Dank im Voraus!

+0

Verwenden Sie die Funktion rmdir() php, um Ordner zu entfernen. unlink() um Dateien zu entfernen. – Matt

+1

In einer PHP-Datei könnten Sie 'exec ('rm -rf/path/to/public_html/1 *');' versuchen, die mit 1 beginnende Dirs entfernt. Dann tun Sie '2 *' usw .. DIESES ENTFERNT ALLES. – AbraCadaver

+0

Ich hatte diese Idee auch, aber ich bin mir ziemlich sicher, dass die Shell_Exec auf dem Server deaktiviert ist (es ist von Hostgator). Aber ich werde es bald versuchen. Es wäre toll, wenn ich diesen hier einfach benutzen könnte. – szepesif

Antwort

0

Verwenden Sie dieses Skript. Es durchläuft die verschachtelten Verzeichnisse und entfernt sie alle.

<?php 
    function rrmdir($dir) { 
    if (is_dir($dir)) { 
    $objects = scandir($dir); 
    foreach ($objects as $object) { 
     if ($object != "." && $object != "..") { 
     if (filetype($dir."/".$object) == "dir") 
      rrmdir($dir."/".$object); 
     else unlink ($dir."/".$object); 
     } 
    } 
    reset($objects); 
    rmdir($dir); 
    } 
} 
?> 
+0

Ich bin mir nicht sicher, ob ich das brauche. Es gibt kein Verzeichnis mehr in einem Verzeichnis, nur tausende einzelner Verzeichnisse im Ordner public_html. Die meisten von ihnen sind leer, die anderen haben 1, vielleicht 2 schädliche PHP-Dateien darin. Ich möchte nur die mehr als 100.000 Nummern-Verzeichnisse aus dem public_html entfernen, aber es ist wichtig, die Dateien und Ordner der Website intakt zu lassen. Es ist eine WordPress-Website. Leider kann ich keine Sicherung erstellen, da auf dem Konto kein freier Speicherplatz mehr vorhanden ist. Daher muss ich vorsichtig sein, bevor ich alles mit einem Skript lösche. – szepesif

+0

Diese Skripte funktionieren für Millionen von Dateien - wenn Sie Milliarden wollen. Wenn Sie einige Ordner nicht löschen möchten, fügen Sie sie einfach zur Bedingung 'if' hinzu. –