bestimmte Dateien automatisch per CRON Job löschen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
TiCar
Beiträge: 42
Registriert: 06.06.2006 23:06:11

bestimmte Dateien automatisch per CRON Job löschen

Beitrag von TiCar » 28.01.2013 15:46:08

Hi,

ich möchte bestimmte Dateien bei uns auf dem FTP Server automatisch löschen.

Da viele Kunden oder Supportmitarbeiter gezippte Datenbank auf unserem FTP Server in den entsprechenden Kundenverzeichnissen ablegen, die sie dann dort vergessen, möchte ich diese automatisch per Skript löschen (z.b. im 7-Tage-Zyklus jeden Sonntag).

Ich bin schon ziemlich am überlegen wie man das rausbekommt, bzw. wie man hier überhaupt ansetzen kann. Ich geh einfach mal stark davon aus, dass jede Datenbank die Endung .zip hat, aber auf jeden Fall mehr als 10MB groß ist. Die Frage ist wie filter ich danach.

Hab schon verschiedene Sachen mit ls -R -S -s -k ... |grep .zip versucht aber komme auf kein Ergebnis :-(
Bin schon kurz davor eine Regel intern aufzustellen, dass jeder der eine DB überträge diese in folgendem Format auf dem FTP ablegen darf -> z.B. db_*.zip

dann wäre der Löschjob relativ einfach denke ich. Hab leider auch gar keine Erfahrung im Skripting von Linux und habe wenn dann immer was kurz in PHP geskript, weil ich das von früher besser kenne :roll: (bitte nicht gleich schlagen - mir ist bekannt, dass dies suboptimal ist, aber in der Not macht man halt alles)

Ich bin mir allerdings relativ sicher dass die Mitarbeiter sich nicht an obige regel halten werden *seufz* Deswegen würde ich gerne eine Liste mit den zu löschen Dateien erstellen

1. Schritt Löschliste mit der Möglichkeit Verzeichnisse zu excluden, bzw. auch Dateien zu excluden.
2. Schritt abarbeiten der Löschliste

Wenn jemand ein Skript hinbringet, der das in einem Schritt macht bin ich natürlich auch nicht böse, ich zerlege nur gerne diverse Prozessschritte, damit man besser debuggen/modifizieren kann.
Vielleicht kann mir hier jemand ein
Gruß,
Lars

Benutzeravatar
feltel
Webmaster
Beiträge: 10476
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Re: bestimmte Dateien automatisch per CRON Job löschen

Beitrag von feltel » 28.01.2013 15:54:58

Schau Dir mal "find" an. Im besten fall ist das ein einzelner Aufruf und das Problem ist gelöst. Wenn Du beim Einlesen nicht weiterkommst, dann ruhig hier nochmal nachfragen und sie werden geholfen. :)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: bestimmte Dateien automatisch per CRON Job löschen

Beitrag von Cae » 28.01.2013 15:57:44

Du suchst find. Mit -size, -name und shell expansion bist du relativ schnell am Ziel. Ausserdem wuerde ich mit -ctime verhindern, dass eine am Freitag angelegte Datei am Montag der Folgewoche schon geloescht wurde.

Und noch ein Tipp: Lass' den Cronjob erstmal nur mit -exec /bin/echo /bin/rm '{}' laufen. Wenn es tatsaechlich keine noch benoetigten Dateien grillen wuerde, kann man entschaerfen und das /bin/echo entfernen.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
feltel
Webmaster
Beiträge: 10476
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Re: bestimmte Dateien automatisch per CRON Job löschen

Beitrag von feltel » 28.01.2013 15:58:44

In neueren Versionen tuts auch -delete. Spart den exec-Aufruf. ;-)

uname
Beiträge: 12468
Registriert: 03.06.2008 09:33:02

Re: bestimmte Dateien automatisch per CRON Job löschen

Beitrag von uname » 28.01.2013 16:07:50

Ich hoffe du löscht die Dateien erst nachdem das tägliche Backup durchgelaufen ist und zudem hoffe ich, dass du ausreichend viele Backupgenerationen hast. Alternativ würde ich das Löschen weglassen und Quota einrichten. Spart viel Ärger.

TiCar
Beiträge: 42
Registriert: 06.06.2006 23:06:11

Re: bestimmte Dateien automatisch per CRON Job löschen

Beitrag von TiCar » 05.03.2013 10:15:10

So, nach dem der FTP server endlich umgezogen melde ich mich hier wieder.

Danke schonmal für die Tipps, mit denen bin ich zumindest schonmal sehr viel weiter gekommen.

ich habe jetzt folgenden Befehl zusammengestellt: find /home -type f -size +15000k -name *.zip

Hier habe ich allerdings noch folgende Probleme.

1. Ich habe in jedem Userverzeichnis ein Verzeichnis all, dass über die fstab auf das Verzeichnis /home/all gebunden ist. Dieses Verzeichnis haben praktisch alle User per readonly im Zugriff. Dh. es muss a) das Verzeichnis /home/all aus der Suche ausgeschlossen werden (mit dem Parameter -not all bin ich leider nicht weiter gekommen) und b) soll es natürlich auch nicht beim durchsuchen jeden Userverzeichnisses durchsucht werden. Ich habe zwar mit -P bzw. -H Versucht dieses aus der Suche auszuschließen, aber sind ja auch keine symbolischen Links :-(

2. Der Zusatz -exec /bin/echo /bin/rm '{}' ergibt den Fehler Fehlendes Argument für "-exec". D.h. der Tipp fand ich sehr gut, da ich dies natürlich gerne erst testen würde, bevor die Daten wirklich gelöscht werden.

Ein Backup des FTP-Servers ist nicht wirklich nötig, da die Daten alle an anderer Stelle vorhanden sind. Es wird allerdings trotzdem täglich ein Snapshot der VM gemacht.

Wäre super, wenn mir noch jemand Tipps für obige Problematiken hat.
Gruß,
Lars

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: bestimmte Dateien automatisch per CRON Job löschen

Beitrag von Cae » 05.03.2013 12:34:03

Zum zweiten Punkt: -exec erwartet am Ende des auszufuehrenden Ausdrucks ein Pluszeichne + oder Semikolon ; (welches wegen der Shell zu \; escaped werden muss). Also willst du -exec /bin/echo /bin/rm '{}' \; verwenden.

Gruss Cae

--Edit: TRex meint im Chat, man soll -rm verwenden. Recht hat er, das ist weniger stoerungsanfaellig und genau fuer diese Aufgabe gedacht. Also wenn du tatsaechlich loeschen moechtest, anstatt -exec... einfach -rm verwenden. Fuer die Vorschau (analog zum -exec /bin/echo oben) laesst du das -rm einfach weg.
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten