Alle Dateien auf einmal auf FTP Server Löschen

KingTrulli

New Member
Hallo,

ich habe eine Frage bezüglich des Löschvorgangs von Dateien auf meinem FTP Server.
Ich habe einen FTP Server und dort habe ich in verschiedenen Ordnern Fotos gespeichert (werden automatisch von verschiedenen Überwachungskameras hochgeladen). Im Laufe der Zeit wird der Server dann langsam immer voller. In manchen Ordnern befinden sich dann mehrer Tausend automatisch hochgeladener Fotos. Jetzt nutze ich FileZilla, um die Fotos bei Bedarf herunterzuladen oder auch zu löschen. Wenn ich allerdings die Fotos in einem Ordner löschen will, werden mir von FileZilla immer nur genau 998 Fotos angezeigt. Wenn ich alle markiere und lösche und anschließend die Ansicht aktualisiere, dann zeigt Filezilla plötzlich die nöchsten 998 Fotos an, die ich dann wieder löschen muss. Wenn ich z.B. 10000 Fotos hochgeladen habe, ist das ziemlich lästig, den Prozess 10x anzustoßen und jedes Mal zu warten, bis die 998 Fotos gelöscht sind um dann die nächsten 998 Fotos zu löschen.
Ich habe auch schon versucht den ganzen Ordner zu löschen. Allerdings werden hier auch wieder nur 998 Fotos geschlöscht und nicht alle. Der Ordner ist dann einfach immer noch da.
Hat jemand einen Tipp oder kennt eine Einstellung, wie ich alle Fotos auf einmal löschen kann?

Vielen Dank
 
Das ist keine Limitierung von Filezilla sondern der FTP-Sever begrenzt aus Selbstschutz die Anzahl an Elementen welche ausgeliefert werden.

FTP kennt kein rekursives oder pattern-basiertes Löschen.
Die einfachste Lösung wäre sein Server-seitiges Löschen statt über FTP, alternativ sollte zB auch WebDAV funktionieren.

Falls du keinen Shell-Zugang hast wäre eine mögliche Lösung ein PHP-Skript.
Dieses könnte mit nur paar Zeilen Code auch zB den created-Timestamp auswerten und alte Bilder vollautomatisch über Cronjob oder Pseudo-Cronjob (HTTP-Cron) entfernen. Sorgenfreies Leben =)
 
vielen Dank für deine Antwort.
Ich habe schon im Web nach ner PHP Lösung gesucht. Leider bin ich da kein Experte. Wäre das hier eine Lösung?

<?php
$path '/';
if (file_exists(dirname($path))) {
foreach (new DirectoryIterator(dirname($path)) as $file) {
if (true === $file->isFile()) {
unlink($file->getPathName());
}
}
rmdir(dirname($path));
}
?>
 
Die Lösung würde dir den Order ÜBER dem angegeben Löschen sofern du einen Ordner (mit oder ohne trailing slash) angibst und keine Datei.
Grund ist dass PHP's dirname() Funktion einfach den letzten Teil "abhackt"

Aber eigentlich wolltest du doch nur den Inhalt und nicht den Ordner selber löschen? Dein Skript ist nämlich darauf ausgelegt diesen mit zu entfernen.
 
Wenn du es via PHP ausführst, solltest du vielleicht auch nicht unbedingt bei "/" anfangen zu löschen. Auch wenn du (hoffentlich) nicht die Rechte haben solltest, den Rest des Systems zu löschen, so würdest du es damit zumindest versuchen. ;)

Schau dir im phpinfo() an, wo deine Daten tatsächlich liegen. Die Pfad-Angabe vom FTP-Server ist hier nur bedingt relevant, weil diese in der Regel als Root-Dir dein Home-Verzeichnis nutzen und alles darüber damit ausgeblendet wird.
 
Back
Top