Skript zum Löschen älterer Dateien auf FTP-Server

  • Hallo,


    ich habe einen FTP-Server (nicht auf dem NAS), auf dem permanent Dateien hochgeladen werden. Da die Dateien nicht überschrieben werden, sondern jeweils im Dateinamen das Datum und die Uhrzeit beinhalten, würde mein FTP-Server bzw. dessen Speicher mit der Zeit volllaufen.


    Meine Idee war nun, auf meinem NAS ein Skript per Cronjob ausführen zu lassen, welches sich per FTP verbinden kann und alle Ordner oder Dateien älter als z.B. 7 Tage weglöscht.


    Hat jemand zufällig so ein Skript oder weiß, wie ich das sehr leicht umsetzen kann? Mit Bash-Skripten und irgendwelchen konsolenbasierten FTP-Clients kenn ich mich nämlich leider nicht so aus.


    Viele Grüße
    Sascha

  • Moin Sascha,

    Zitat von "sushilange"


    Hat jemand zufällig so ein Skript oder weiß, wie ich das sehr leicht umsetzen kann? Mit Bash-Skripten und irgendwelchen konsolenbasierten FTP-Clients kenn ich mich nämlich leider nicht so aus.


    Einfach wird das nicht, da die Möglichkeiten per ftp sehr begrenzt sind.
    Ich würde das Backupscript so anpassen, dass die Backups im Namen den Wochentag haben (montag.tgz usw.), dann werden vorhandene Dateien überschrieben.

  • Da sind wir wieder an einem Punkt, an dem es vorteilhaft ist, das Ganze zu beschreiben.
    Was macht denn nun deine Kamera?
    Ein Backup :-/

  • Na im ersten Post ist ja alles Wichtige bereits gesagt ;) Welchen Inhalt die Daten haben (in meinem Fall Videoaufzeichnungen) ist ja für die gewünschte Funktion egal ;) Die IP-Kamera lädt die Aufnahmen per FTP auf meinem FTP-Speicher hoch. Ich benötige ein Skript, welches alle Ordner älter als X Tage löscht, damit der Speicher nicht vollläuft.

  • Wenn du meinst.
    Ich bin dann weg.

  • Was soll so was? Das wird jeder (!) so meinen. Alles andere ergäbe überhaupt keinen Sinn. Zum Löschen von Dateien ist ja wohl völlig egal, was IN den Dateien ist!

  • Oh Mann... Ihr redet aneinander vorbei.


    Im Anfangsbeitrag steht bedauerlicherweise nicht alles, was relevant wäre und Kollege Frosch hat schlichtweg nach den fehlenden Informationen gefragt, nicht nach dem Inhalt.
    Du hast nach technischer Hilfe gefragt und nicht danach, wie Du ein Objekt am besten erfasst. Folglich werden auch technische Rahmeninformationen benötigt.


    Die gewünschte Information wäre gewesen:


    Die Cam lädt (z.B.) per FTP Dateien im Format "201307090846.mpg" hoch. Also quasi "yyyymmddhhmm.mpg".


    Auch steht dort nicht, um welches NAS es sich handelt, wie der FTP strukturiert (ausgestattet) ist und um welches Kameramodell es sich handelt.


    Das sind alles Informationen, die nichts über den Inhalt der Videos verraten, aber bei der Lösungsfindung helfen.


    Die Surveillance-Station dürfte die gewünschte Funktion beinhalten.
    Eine CAM, die eine FTP-Funktion besitzt, wird sicherlich in der Surveillance-Station irgendwie erkannt werden können.


    Ansonsten gibt es bei Mrs. Google auch reichlich Surveillance-Software für andere Server.


    NAS'e sind im weitesten Sinne als Netzwerkspeicher mit Serverfunktionen gedacht und nicht als FTP-Clients mit erweiterter Funktion.

  • Hi,


    Da man über FTP ja auch das Erstellungsdatum von Ordnern und Dateien erhalten kann, war der Dateiname für mich zunächst irrelevant, aber ja, darüber könnte man auch den Zeitfilter machen. Ebenso könnte man es über die Anzahl der Ordner, da für jeden Tag ein Ordner angelegt wird. Gibt es also z.B. mehr als 7 Ordner werden die ersten wieder gelöscht.


    Inwiefern kann mir die Surveillance-Software helfen? Meine IP-Kamera lädt direkt auf einen externen FTP-Server hoch, also nicht auf mein NAS, und bietet leider keine Löschfunktion - bzw. nur wenn man auf die interne SD-Karte speichert. Kann die Surveilance Funktion von QNAP sowohl Aufnahmen bei Bewegungserkennung per FTP hochladen und alte Dateien auf dem FTP-Server wieder löschen?


    Viele Grüße
    Sascha

  • Ich erlaube mir mal, die Antwort auf eine simple Information zu beschränken (Beschreibung der Surveillance Station).


    Was Du haben möchtest, ist eine komplett selbstgeschriebene Software (kein Script), welche sich in irgendeinen Nicht-QNAP-Server per FTP einwählt und nach festen Algorithmen selektive Löschungen vornimmt.
    Dafür wäre das hier das falsche Forum.


    Die Surveillance-Station zeichnet grundsätzlich auf der QNAP auf. Die Dateien könnten z.B. täglich per Remote Replikation auf einen anderen Server synchronisiert werden.
    Wenn Du das unbedingt auf einem "Fremdserver" erledigen willst, musst Du eben dort eine entsprechende Surveillance-Software installieren.

  • Ich habe nur den FTP-Server, dort kann ich es also nicht ausführen.


    Wieso ist es das falsche Forum? Hier geht es doch ständig um eigene Skripts?! Bzgl. FTP habe ich auch einiges gefunden (es lassen sich verschiedene Clients mit ipkg installieren), jedoch ging es dort stets um das Hoch- oder Runterladen von Daten, nicht um das Ermitteln der Dateistruktur und dem Löschen, daher meine Frage, ob jemand entweder so ein Skript zufällig für sein Backup-Szenario erstellt hat oder weiß, wie ich eines der FTP Tools passend für meinen Fall per Bash Skript bediene, da ich mich damit nicht so auskenne, mit allem anderen aber schon. Bevor ich ein Thread eröffne, suche ich immer erst mit Google und in Foren. Wie gesagt, habe ich dazu nichts gefunden und ein Forum ist ja für solche, durchaus interessante, Themen da.


    Zur Not mach ich es halt mit Mono, da das entwickeln einer .NET Konsolenanwendung für mich viel einfacher ist :)

  • Hallo sushilange,


    warum der Umweg über das NAS auf den FTP, um alte Files zu löschen?


    Mein Ansatz wäre, mit einem Skript auf dem FTP-Server die Bilder vor Ort zu löschen.
    Ich gebe meinen Vorrednern Recht: Wenn dir konkret geholfen werden soll,
    musst du das Problem konkreter formulieren.



    Gruß vom subitus

  • Hä?


    Ich habe doch gesagt, ich habe NUR einen FTP-Server, d.h. ich kann dort keine Skripte ausführen. Also muss ich irgendwo sonst ein Skript ausführen lassen. Einen Server habe ich nicht, also kommt nur noch mein NAS in Frage.


    Ich habe im ersten Post ALLES (!) Wichtige genannt. Wenn man sich den ersten Post gründlich durchliest, dann ist dort alles deutlich formuliert und klar. Ich habe lediglich die Info weggelassen, woher die Dateien kommen, welche Informationen die Dateien beinhalten und wie die Dateinamen aufgebaut sind, denn all diese Informationen sind völlig unwichtig und haben mit dem Problem nichts zu tun. Vor allem soll ein Thread auch eine Anlaufstelle für andere sein. Mein Problem ist schließlich kein spezielles, sondern ein allgemeines, was auch anderen bei ähnlichen Problemen helfen kann!


    Wenn man konkreter geworden wäre und man erste Lösungsansätze hat, DANN hätte man vielleicht die Dateinamen ins Spiel bringen können, sofern es einfacher ist darüber ältere Dateien zu filtern, statt es direkt über das Erstelldatum zu machen.


    Also, es ist alles im ersten Post gesagt, daher wäre es schön, wenn hier Leute antworten würden, die dazu eine Lösung beitragen können, statt das man hier erst einmal 2 (!) Seiten rumdiskutiert. Sowas ist total kontraproduktiv, da es nicht zum Ziel führt und zum anderen erschwert es anderen den Einstieg, weil man sich erst mal Unmengen an unnützen Posts durchlesen muss! Es ist auch nicht hilfreich, wenn man mit "warum machste das nicht so und so", etc. ankommt. Das ist aber komischerweise so eine Krankheit, die seit einigen Jahren in ALLEN Foren stattfindet. In jedem Forum, egal zu welchem Thema, sind die ersten 2 Seiten eines Threads immer nur sinnlose Diskussionen.


    Fakt ist, ich habe eine sehr konkrete Frage gestellt und um Hilfe für genau das gestellte gesucht. Für nichts Anderes. Ich bin zu 99% sicher, dass es für mein Problem eine Lösung gibt. Da hier viele irgendwelche Custom Skripte laufen haben, sind hier auch sicherlich viele dabei, die davon Ahnung haben. Schließlich nutzen 99% von uns unser NAS nicht nur als reine Netzwerkfestplatte, denn dafür hätte sich niemand so ein teures NAS gekauft ;)



    EDIT: Ich benötige keine Hilfe mehr. Ich wurschtel mich da nun selbst durch :)


    --- EDIT ---


    Lösung:


    Ich hab es mir nun einfach gemacht und nehme die Ordnernamen als Hilfe, da ich so nicht erst das Erstelldatum auslesen muss und dann anhand der Ordnerliste die Daten lösche. Problem war auch, dass der find-Befehl bei lftp sehr eingeschränkt ist und keine Zeitfilter (-ctime, -mtime) erlaubt.


    Code
    DATE=$(date --date="7 days ago" +"%Y%m%d")
    lftp -e "rm -r -f /VERZEICHNIS/${DATE}; bye" -u USER,PASSWORD SERVER


    Darauf kann man nun noch aufbauen und z.B. Fehler loggen / melden, bzw. darauf reagieren, um sicher zu stellen, dass auch bei einem temporären Fehler das Verzeichnis später gelöscht wird.


    Die ganz billige Variante wäre, dass man den obigen Code z.B. 3mal ausführt, jedoch einmal mit -7, -8 und -9 Tagen, um sicherzustellen, dass ein Ordner, welcher z.B. gestern nicht gelöscht werden konnte, heute gelöscht wurde. Ist zwar nicht sehr sauber, aber in meinem Fall würde es völlig ausreichend sein. Vor allem mit Benachrichtigung bei einem Fehler würde man sowieso manuell nachschauen, was da los ist und kann ggf. liegengebliebende Verzeichnisse manuell löschen.


    Das Skript oben lass ich dann einfach 1x am Tag laufen :)

    Einmal editiert, zuletzt von GorillaBD () aus folgendem Grund: Doppelte Beiträge vermeiden, siehe Forenregeln!

  • Nunja, wenn du alle Kriterien genannt hättest, hätte man dir weiterhelfen können.


    Dass die Organisation in Ordnern erfolgt, hast du zunächst verschwiegen. Wie die Dateinamen kodiert sind ebenfalls. Dass die Daten von einer (nicht beeinflussbarer??) Kamera kommen, erwähnst du erst in deinem zweiten und dritten Post. Wie kannst du dann davon sprechen, "alles Wichtige" genannt zu haben? Eine einfache LIST-Ausgabe mit Erklärung hätte sicherlich mehr geholfen. Möglicherweise reicht ein passender Dateifilter aus, um alte Files zu löschen - reine Spekulation natürlich. Im übrigen gibt es hunderte ftp-Implementierungen - sieht oft ähnlich aus, verhält sich aber anders.



    Du willst dass man dir hilft und beschwerst dich, wenn andere nachhaken, um dir zu helfen? Vielleicht schreckst du potentielle Helfer mit deinem Tonfall ab? Denke mal bis zum nächsten Hilfeschrei darüber nach.



    Hier und jetzt bin ich auch raus.


    Gruß vom subitus

  • Ähm, diese Infos waren VÖLLIG UNWICHTIG!!! ERST (!!!) wenn man ins Detail geht und konkrete Lösungen erarbeitet, hätte man darauf eingehen können. Denn nochmal: In meinem ersten Post stand ALLES (!) drin, was zur Lösung helfen konnte.


    Meine Anforderung war: Ein Skript, welches Dateien, die älter als X Tage sind, auf einem FTP-Server löscht. Dabei ist es sowas von Wurscht, ob es Aufnahmen einer Kamera sind, wie die Dateinamen lauten (denn nach dem Dateinamen zu gehen wäre zwar in meinem Falle möglich, aber keine generelle Lösung für Fälle, wo der Dateiname kein Datum beinhaltet!).


    Also hör auf so Text von einem Moderator zensiert zu erzählen. Fakt ist, man hat hier unnötig einen auf "cool" gemacht und gedacht, dass hier ein totaler Noob am Werke wäre, dem man erst mal mit all seinem Wissen, wie er nicht alles besser machen kann und was er nicht alles vergessen hat zu erwähnen, zu texten kann, statt einfach zu helfen.


    Fassen wir zusammen:


    1.) Info, dass es nicht leicht wird: passt.
    2.) Vorschlag: Dateinamen abzuändern
    3.) Vorschlag ist ok, da es für einzelne Fälle möglich sein kann, in meinem Fall jedoch nicht. Als ich dies sagte, DIREKT Kritik, dass ich ja hätte erst mal alles mögliche noch erzählen sollen: KRITIK völlig überflüssig!
    4.) Hinweis darauf, dass im ersten Post alles Wichtige genannt wurde, endet mit einer Text von einem Moderator zensiert Reaktion seitens des MODERATORS (!)
    5.) Danach folgten noch einige Diskussionen darüber, ob es überhaupt das richtige Forum sei, da es ja nur eine Festplatte sei (ja, das Forum ist richtig!), dass ich die Surveillance-Funktion des NAS verwenden solle (da mir nicht bekannt war, dass das damit möglich wäre, fragte ich verwundert nach und bekam als Antwort, dass ich mir doch die Funktionsbeschreibung durchlesen solle, dann wüsste ich, dass es damit nicht möglich ist... war also ein sehr sinnvoller Vorschlag! :D ), usw. usf.



    Also, einige sollten sich hier echt mal schämen! Es ist ein öffentliches Forum, wo jemand eine völlig vernünftige und ausführliche Frage gestellt hat! Dass dann auch noch der Moderator (!) Text von einem Moderator zensiert. In Zukunft helf ich mir einfach weiterhin selber und lasse andere nicht an einer interessanten Diskussion teilhaben, da dies bedeutend effektiver und schneller ist, als Text von einem Moderator zensiert rumzudiskutieren.


    Meine Lösung hätte nämlich der ein oder andere sicherlich auch gewusst und hätte sie einfach posten können. Klar, diesem Fall ist es die faule Variante, die nur geht, wenn die Dateinamen oder Ordnernamen das Datum beinhalten, aber das war ja auch nicht im ersten Post gefragt worden. D.h. die "richtige" Lösung wäre gewesen, dass man sich die Liste der Ordner runterzieht, das Datum vergleicht und dann die Ordner per FTP löscht. Damit hätte man eine allgemeine Lösung, die für jeden funktioniert hätte, egal wie die Dateinamen lauten. Da wir alle ein QNAP NAS haben, würde das auch bei jedem Laufen, der sich dann ggf. lftp, ncftp, etc. nachträglich installiert (ipkg install).


    Und damit Text von einem Moderator zensiert, sag ich es nun zum 10. Mal: Und genau dafür hab ich im ersten Post ALLES notwendige erwähnt. Für die Lösung sind Dateinamen, Ordnernamen, Dateiinhalte, etc. unwichtig und ich sagte auch, dass ich das Skript auf meinem NAS ausführen möchte und mein FTP-Server nicht auf dem NAS ist. Würde ich dort, wo der FTP-Server läuft, mehr Möglichkeiten haben, dann würde ich logischerweise das Skript auch dort ausführen lassen und könnte dort normal auf Dateiebene löschen. Kann man sich aber auch eigentlich denken, denn sonst hätte ich nicht extra erwähnt, dass es nur ein FTP-Server ist und ich mein Skript auf meinem NAS ausführen möchte, welches sich per FTP verbinden soll. Sonst hätte ich schließlich gefragt, wie ich alte Dateien auf einem Linux-Server löschen kann. Oder, oder, oder.

    4 Mal editiert, zuletzt von GorillaBD () aus folgendem Grund: Ehrverletzende Äusserungen entfernt!

  • Gentlemen,


    spätestens ab hier besteht nun Flame-Gefahr.


    Ab sofort sind daher weitere Einträge auf das Stellen von Sachfragen und Geben von Sachantworten zu beschränken. Für das weitere Klären von Befindlichkeitsstörungen über persönliches Verhalten und zugehörige Meinungsverschiedenheiten oder mögliche Missverständnisse ist ausschliesslich die Funktion Private Nachrichten zu benutzen. :!:


    Danke und Viele Grüsse
    GBD