WinFuture-Forum.de: Löschroutine / Cronjob - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Linux
Seite 1 von 1

Löschroutine / Cronjob

#1 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 491
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 06. Januar 2013 - 13:36

Hallo liebe Community,
ich bin neu in Linux bzw Debian. Grundsätzlich muss ich sagen... wieso hab ich nur sooo lange damit gewartet :) es macht echt vieles leichter.

nun stehe ich aber vor einem Problem dass ich zurzeit leider nicht alleine lösen kann.
ich hab einen Ordner "var/www/website/data". In diesem Ordner möchte ich Dateien mit folgender Struktur löschen:
z.B.: tmp-6.dateiname.xls

Somit bräuchte ich ein Script dass alle Daten aufschlüsselt die mit tmp anfangen und danach überprüfen ob die Datei schon älter als 6 Tage ist. Die Zahl kann variieren.

hab mittlerweile das ganze so gelöst:
find /var/www/website/data -name '*.bak' -mtime 5 -exec rm {} \;

Hier lösche ich einfach alle Daten die mit .bak enden und älter als 5 Tage sind.
Weis leider nicht wie ich das mit der variablen Zahl nach tmp- erstellen kann bzw abfragen.

Danke für eure Bemühungen
ParTy
0

Anzeige

#2 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.452
  • Beigetreten: 20. Juli 04
  • Reputation: 57

geschrieben 06. Januar 2013 - 18:08

Welche Zahl jetzt? die im Dateinamen?

Das sollte alle xls-dateien löschen, die mit tmp-ZIFFER beginnen:
find /var/www/website/data -regex "tmp-[0-9]?.*\.xls" -mtime 5 -exec rm {} \;

Bzw. alle xls-dateien löschen, die mit tmp-ZAHL beginnen:
find /var/www/website/data -regex "tmp-[0-9]*\.xls" -mtime 5 -exec rm {} \;

Oder alle xls-dateien löschen, die mit tmp-EIN- ODER ZWEISTELLIGE ZAHL beginnen:
find /var/www/website/data -regex "tmp-[0-9]{1-2}.*\.xls" -mtime 5 -exec rm {} \;

Dieser Beitrag wurde von sкavєи bearbeitet: 06. Januar 2013 - 18:09

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 491
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 06. Januar 2013 - 18:53

Beitrag anzeigenZitat (sкavєи: 06. Januar 2013 - 18:08)

Welche Zahl jetzt? die im Dateinamen?

Das sollte alle xls-dateien löschen, die mit tmp-ZIFFER beginnen:
find /var/www/website/data -regex "tmp-[0-9]?.*\.xls" -mtime 5 -exec rm {} \;

Bzw. alle xls-dateien löschen, die mit tmp-ZAHL beginnen:
find /var/www/website/data -regex "tmp-[0-9]*\.xls" -mtime 5 -exec rm {} \;

Oder alle xls-dateien löschen, die mit tmp-EIN- ODER ZWEISTELLIGE ZAHL beginnen:
find /var/www/website/data -regex "tmp-[0-9]{1-2}.*\.xls" -mtime 5 -exec rm {} \;



danke für die Antwort.

die zahl hinter dem tmp- soll die Tage der Löschroutine bestimmen.

z.B.:
tmp-7 = -mtime 7
tmp-14 = -mtime 14

da hänge ich, weil ich nicht weis wie ich auf diese Zahl zurückgrifen kann

Danke nochmals
ParTy
0

#4 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.452
  • Beigetreten: 20. Juli 04
  • Reputation: 57

geschrieben 07. Januar 2013 - 08:30

Verstehe ich dich richtig? Du möchtest immer alle Dateien löschen die älter als 6 Tage sind und die Zahl im Dateinamen entspricht immer dem Alter der Dateien? Also möchtest du alle Dateien mit löschen, die mit tmp-5 oder größer anfangen?

Das hier wäre jetzt mal eben die einfachste Möglichkeit die mir einfällt um z.B. alle Dateien von tmp-5.* bis tmp-100.* löschen:
#!/bin/bash
for i in {5..100}
  rm /var/www/website/data/tmp-$i.*.xls
done

siehe hierzu: http://www.cyberciti.../bash-for-loop/

Bzw. mit csh (brauchst du vmtl. eher nicht):
#!/bin/csh
foreach i (`seq 5 1 100`)
  rm /var/www/website/data/tmp-$i.*.xls
end

Dieser Beitrag wurde von sкavєи bearbeitet: 07. Januar 2013 - 08:44

Eingefügtes Bild
Eingefügtes Bild
0

#5 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 491
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 07. Januar 2013 - 09:25

Guten Morgen,

entschuldigung dass ich mich nicht korrekt ausgedrückt habe, hast einen Kaffee gut bei mir :)

Also nein ich möchte folgende.
Daten löschen die mit "tmp-" anfangen. Der Zeitraum wann die Dateien gelöscht werden, hängt von der angehängten Zahl ab.
Sprich:
tmp-7.test1.xls (Soll nach 7 Tagen nach Erstelldatum gelöscht werden)
tmp-14.test2.xls (Soll nach 14 Tagen nach Erstelldatum gelöscht werden)
tmp-28.test3.xls (Soll nach 28 Tagen nach Erstelldatum gelöscht werden)

Nochmals sry und danke für deine Bemühungen.
ParTy
0

#6 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.452
  • Beigetreten: 20. Juli 04
  • Reputation: 57

geschrieben 07. Januar 2013 - 09:36

Ahhh, jetzt wird's klarer. :)

#!/bin/bash
for i in {5..100} # durchlaufe alle Zahlen von 5-100
  find /var/www/website/data -name 'tmp-$i.*.xls' -mtime $i -exec rm {} \; # $i entspricht der Zahl im jeweiligen Durchlauf
done

Eingefügtes Bild
Eingefügtes Bild
1

#7 Mitglied ist offline   Party 

  • Gruppe: aktive Mitglieder
  • Beiträge: 491
  • Beigetreten: 16. Januar 04
  • Reputation: 0

geschrieben 07. Januar 2013 - 11:55

suppperr vielen vielen Danke :)

Auf den Lösungsweg wäre ich glaub ich in einer Woche noch nicht gekommen.
Hab viel zu kompliziert gedacht dass ich dies irgendwie mit regexp lösen muss und hab mich darauf zu sehr versteift :blush:


Beitrag anzeigenZitat (sкavєи: 07. Januar 2013 - 09:36)

Ahhh, jetzt wird's klarer. :)

#!/bin/bash
for i in {5..100} # durchlaufe alle Zahlen von 5-100
  find /var/www/website/data -name 'tmp-$i.*.xls' -mtime $i -exec rm {} \; # $i entspricht der Zahl im jeweiligen Durchlauf
done


0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0