[Problem] Script zum Löschen von Videos geht nicht

schumi20091

Neuer User
Mitglied seit
19 Mai 2009
Beiträge
193
Punkte für Reaktionen
4
Punkte
18
Hallo,
ich habe an meiner FritzBox 7590 mit Freetz eine externe Festplatte, wo die Aufnhamen von den Überwachungskameras gespeichert werden. Ich habe es aktuell schon so hinbekommen, dass die Videos von einem Tag in den Passenden Datums Ordner verschoben werden. Jetzt möchte ich aber noch, dass die Videos bzw. Ordner mit dem Datumsnamen der älter als 30 Tage ist automatisch gelöscht werden! Das Skript wird über Crontab ausgeführt.
So sieht es aktuell aus:
#!/bin/sh
# Ordner mit heutigem Datum erstellten
mkdir /var/media/ftp/uStor01/01_Test/$(date +\%Y-\%m-\%d)
# Warte Zeit
sleep 59
# Alle Dateien aus dem Ordner "Z_Heute" in den Ordner mit dem gerade erstellten (heutigem) Datum verschieben
mv /var/media/ftp/uStor01/01_Test/Z_Heute/* /var/media/ftp/uStor01/01_Test/$(date +\%Y-\%m-\%d)
# Warte Zeit
sleep 120
# Pfad wo sich die Ordner zum löschen befinden
path= /var/media/ftp/uStor01/01_Test/
# Ordner löschen, die Ãlter als 30 Tage sind
find $path -maxdepth 1 -mtime +30 -type d -exec rm -rf {} ';'

Warum geht das Löschen aktuell nicht?
Wichtig ist das der Ordner "Z_Heute" nie gelöscht wird.
 
Die erste sleep-time könnte mE raus.

Wurde der Timestamp angepasst (beim testen) bzw ist der Ordner denn älter als die angegebenen 30 Tage?
Code:
pi@banana:~ $ mkdir /tmp/test
pi@banana:~ $ ls -lh /tmp/
insgesamt 4,0K
drwxr-xr-x 2 pi pi 4,0K Jan  1 01:17 test
pi@banana:~ $ touch -r /tmp/test/ -d "-31 days" /tmp/test/
pi@banana:~ $ ls -lh /tmp/
insgesamt 4,0K
drwxr-xr-x 2 pi pi 4,0K Dez  1 01:17 test
pi@banana:~ $ find /tmp/ -maxdepth 1 -mtime +30 -type d -exec rm -rf {} ';'
pi@banana:~ $ ls -lh /tmp/
insgesamt 0
pi@banana:~ $
Code:
pi@banana:~ $ mkdir /tmp/test
pi@banana:~ $ touch -r /tmp/test/ -d "-30 days" /tmp/test/
pi@banana:~ $ ls -lh /tmp/
insgesamt 4,0K
drwxr-xr-x 2 pi pi 4,0K Dez  2 01:20 test
pi@banana:~ $ find /tmp/ -maxdepth 1 -mtime +30 -type d -exec rm -rf {} ';'
pi@banana:~ $ ls -lh /tmp/
insgesamt 4,0K
drwxr-xr-x 2 pi pi 4,0K Dez  2 01:20 test
pi@banana:~ $

In Deinem Fall wäre ein -mtime +29 das Richtige
 
Zuletzt bearbeitet:
  • Like
Reaktionen: schumi20091
Die erste sleep time ist drin, weil das Scritp um 23:59Uhr ausgeführt wird und so die Videos bis 23:59:59Uhr alle verschoben werden!

Die Ordner haben alle als erstellungsdatum den Tag mit dem entsprechendem Datum!

Würde der Ordner "Z_Heute" bei deinem Script nicht auch mit gelöscht werden?

Ich habe es gerade mal per Telnet getestet bei der Eingabe von:
touch -r /var/media/ftp/uStor01/01_Test/ -d "+29 days" /var/media/ftp/uStor01/01_Test/

Erhalte ich diese Fehlermeldung:
touch: invalid date '+29 days'

Und bei der Eingabe von:
find /var/media/ftp/uStor01/01_Test/ -maxdepth 1 -mtime +29 -type d -exec rm -rf {} ';'

Passiert nichts...keine Fehlermeldung, es wird aber auch nichts gelöscht...
 
Zuletzt bearbeitet:
Du weißt aber schon, daß Du Dir mit einem "find" ohne die "exec"-Option auch einfach die "ausgewählten" Verzeichnisse anzeigen lassen könntest?

Gerade beim Feintuning solcher Kommandos ist das sicherlich erst einmal der bessere Weg ... ansonsten kann es problemlos auf vorkommen, daß der Befehl mal genau gar nichts "Sichtbares" macht. Denn nur gefundene Verzeichnisse, die den Kriterien entsprechen, würden zum Aufruf des "rm" führen - gibt es keine Verzeichnisse, gibt es keinen Aufruf (mithin auch keine Fehlermeldungen) und auch keine irgendwie geartete Ausgabe auf STDOUT (oder STDERR).

Der Versuch, das "touch" in der BusyBox mit einer Datumsangabe "+29 days" zu "füttern", erscheint mir - nur nebenbei - so gar nicht logisch. Bei einer Software. die eigentlich strikt auf geringst möglichen Platzbedarf getrimmt wird (wie das bei der BusyBox nun mal der Fall ist), wird kein vernünftiger Mensch solche "relativen" Angaben einbauen ... wie kommst Du darauf, daß Deine BusyBox (und ich wäre sehr verblüfft, wenn "touch" nicht ein Symlink auf ebendiese "/bin/busybox" sein sollte) das irgendwie anders handhaben könnte?

EDIT:
Außerdem kannst Du Dir ja mal diese Kommandos anschauen:
Code:
root@FB7490:~ $ mkdir /var/test;touch -d "2018-12-01" /var/test/file;ls -l /var/test/file
-rw-r--r--    1 root     root             0 Dec  1 19:55 /var/test/file
root@FB7490:~ $ find /var/test -mtime +31
root@FB7490:~ $ find /var/test -mtime 31
/var/test/file
root@FB7490:~ $ find /var/test -mtime -31
/var/test
root@FB7490:~ $ rm -r /var/test
root@FB7490:~ $
und Dir überlegen, was da bei Dir wohl schiefgehen könnte.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: schumi20091
Die erste sleep time ist drin, weil das Scritp um 23:59Uhr ausgeführt wird und so die Videos bis 23:59:59Uhr alle verschoben werden!
na wenns durchdacht ist ;)
Würde der Ordner "Z_Heute" bei deinem Script nicht auch mit gelöscht werden?
das von mir gezeigte ist ja kein Script, sondern eine manuelle Nachbildung Deiner "Aufgabe" incl manuellem ändern des Timestamps, um für das nachfolgende find /tmp/ -maxdepth 1 -mtime +29 -type d -exec rm -rf {} ';' erst mal die nötigen Vorraussetzungen zu schaffen - wie Du siehst arbeite ich da an einem BananaPi (ergänzend: auf Raspbian)


Code:
pi@banana:~ $
$ mkdir -p /tmp/media/ftp/uStor01/01_Test/$(date +\%Y-\%m-\%d)
$ mkdir -p /tmp/media/ftp/uStor01/01_Test/Z_Heute
$ touch /tmp/media/ftp/uStor01/01_Test/Z_Heute/abc    ### um eine Datei zu haben welche in den date-variable-ordner verschoben werden kann, sonst wird dieser Ordner nicht angelegt, sollte aber auf der F!B ja schon vorhanden sein, lt Deiner Aussage
$ mv /tmp/media/ftp/uStor01/01_Test/Z_Heute/* /tmp/media/ftp/uStor01/01_Test/$(date +\%Y-\%m-\%d)
$ touch -r /tmp/media/ftp/uStor01/01_Test/2019-01-01/ -d "-30 days" /tmp/media/ftp/uStor01/01_Test/2019-01-01/     ### auch das musst Du nicht ausführen, da die Ordner ja den passenden Timestamp aufweisen sollten.
$ ls -lh /tmp/media/ftp/uStor01/01_Test/
insgesamt 8,0K
drwxr-xr-x 2 pi pi 4,0K Dez  1 20:05 2019-01-01
drwxr-xr-x 2 pi pi 4,0K Jan  1 20:05 Z_Heute
$ find /tmp/media/ftp/uStor01/01_Test/ -maxdepth 1 -mtime +29 -type d -exec rm -rf {} ';'
$ ls -lh /tmp/media/ftp/uStor01/01_Test/                            insgesamt 4,0K
drwxr-xr-x 2 pi pi 4,0K Jan  1 20:05 Z_Heute
$

//

Und bei der Eingabe von:
find /var/media/ftp/uStor01/01_Test/ -maxdepth 1 -mtime +29 -type d -exec rm -rf {} ';'

Passiert nichts...keine Fehlermeldung, es wird aber auch nichts gelöscht..
zeig uns doch mal die Ausgabe von ls -lh /var/media/ftp/uStor01/01_Test/
 
Zuletzt bearbeitet:
  • Like
Reaktionen: schumi20091
zeig uns doch mal die Ausgabe von ls -lh /var/media/ftp/uStor01/01_Test/
Die Ausgabe sieht so aus:
Code:
ls -lh /var/media/ftp/uStor01/01_Test/
drwxrwxrwx    1 root     root       40.0K Dec  4 15:12 2018-12-01
drwxrwxrwx    1 root     root        4.0K Dec  4 15:13 2018-12-02
drwxrwxrwx    1 root     root       20.0K Dec  4 15:13 2018-12-03
drwxrwxrwx    1 root     root       64.0K Dec  5 00:00 2018-12-04
drwxrwxrwx    1 root     root       28.0K Dec  6 00:00 2018-12-05
drwxrwxrwx    1 root     root       36.0K Dec  7 00:00 2018-12-06
drwxrwxrwx    1 root     root           0 Dec  7 23:59 2018-12-07
drwxrwxrwx    1 root     root       64.0K Dec  9 00:00 2018-12-08
drwxrwxrwx    1 root     root           0 Dec 10 17:54 2018-12-09
drwxrwxrwx    1 root     root       32.0K Dec 11 00:00 2018-12-10
drwxrwxrwx    1 root     root       44.0K Dec 12 00:00 2018-12-11
drwxrwxrwx    1 root     root       28.0K Dec 13 00:00 2018-12-12
drwxrwxrwx    1 root     root           0 Dec 13 23:59 2018-12-13
drwxrwxrwx    1 root     root       68.0K Dec 15 00:00 2018-12-14
drwxrwxrwx    1 root     root       40.0K Dec 16 00:00 2018-12-15
drwxrwxrwx    1 root     root       32.0K Dec 17 00:00 2018-12-16
drwxrwxrwx    1 root     root       12.0K Dec 17 23:59 2018-12-17
drwxrwxrwx    1 root     root           0 Dec 18 23:59 2018-12-18
drwxrwxrwx    1 root     root       72.0K Dec 20 00:00 2018-12-19
drwxrwxrwx    1 root     root       24.0K Dec 21 00:00 2018-12-20
drwxrwxrwx    1 root     root           0 Dec 21 23:59 2018-12-21
drwxrwxrwx    1 root     root       64.0K Dec 23 00:00 2018-12-22
drwxrwxrwx    1 root     root       32.0K Dec 24 00:00 2018-12-23
drwxrwxrwx    1 root     root       32.0K Dec 25 00:00 2018-12-24
drwxrwxrwx    1 root     root       12.0K Dec 25 23:59 2018-12-25
drwxrwxrwx    1 root     root        4.0K Dec 27 00:00 2018-12-26
drwxrwxrwx    1 root     root       28.0K Dec 28 00:00 2018-12-27
drwxrwxrwx    1 root     root           0 Dec 28 23:59 2018-12-28
drwxrwxrwx    1 root     root       60.0K Dec 30 00:00 2018-12-29
drwxrwxrwx    1 root     root           0 Dec 30 23:59 2018-12-30
drwxrwxrwx    1 root     root           0 Dec 31 23:59 2018-12-31
drwxrwxrwx    1 root     root           0 Jan  1 23:59 2019-01-01
drwxrwxrwx    1 root     root      144.0K Jan  2 16:11 Z_Heute

Falls das mit dem Z_Heute Ordner zu Problem führt, kann ich die Verzeichnisstruktur auch noch etwas anpassen!

//edit by stoney: Im Spoiler Code-Tag zwecks Lesbarkeit gesetzt
 
Zuletzt bearbeitet von einem Moderator:
Die Ausgabe sieht so aus:
na passt doch, wenn wir davon aus gehen, das Z_Heute das Datum+Uhrzeit der Ausgang ist, wurde doch alles älter als 29 Tage, also ab dem 30. Tag, gelöscht - 03.12.2018 wäre der 30. Tag, also das jüngste Datum auf welches das Löschen angewand wird

Falls das mit dem Z_Heute Ordner zu Problem führt
nein tut es nicht, wie Du ja selbst in der letzten Zeile sehen kannst, bekommt der Ordner immer das aktuelle Datum, falls dort rein geschrieben wurde.

Code:
$ ls -lh /tmp/media/ftp/uStor01/01_Test/                            insgesamt 32K
drwxr-xr-x 2 pi pi 4,0K Dez  1 23:43 aaa
drwxr-xr-x 2 pi pi 4,0K Dez  2 23:43 bbb
drwxr-xr-x 2 pi pi 4,0K Dez  3 23:43 ccc
drwxr-xr-x 2 pi pi 4,0K Okt  7 00:39 ddd
drwxr-xr-x 2 pi pi 4,0K Okt  8 00:39 eee
drwxr-xr-x 2 pi pi 4,0K Okt  9 00:39 fff
drwxr-xr-x 2 pi pi 4,0K Okt 10 00:39 ggg
drwxr-xr-x 2 pi pi 4,0K Jan  2 23:39 Z_Heute
$ sudo find /tmp/media/ftp/uStor01/01_Test/ -maxdepth 1 -mtime +29 -type d -exec rm -rf {} ';'
$ ls -lh /tmp/media/ftp/uStor01/01_Test/                            insgesamt 4,0K
drwxr-xr-x 2 pi pi 4,0K Jan  2 23:39 Z_Heute
 
  • Like
Reaktionen: schumi20091
Also mit den Telnet eingaben findet er die Ordner, aber wie muss ich das jetzt im Script eingeben, damit er die Ordner findet und dann löscht?

Sorry habe noch nicht so viel damit zutun gehabt...
 
Versuch's mal mit
Code:
#!/bin/sh
# Ordner mit heutigem Datum erstellten
mkdir -p /tmp/media/ftp/uStor01/01_Test/$(date +\%Y-\%m-\%d) >/dev/null 2>&1
# Ordner Z_Heute erstellen, falls nicht vorhanden
mkdir -p /tmp/media/ftp/uStor01/01_Test/Z_Heute >/dev/null 2>&1
# Warte Zeit
sleep 59
# Alle Dateien aus dem Ordner "Z_Heute" in den Ordner mit dem gerade erstellten (heutigem) Datum verschieben
mv /var/media/ftp/uStor01/01_Test/Z_Heute/* /var/media/ftp/uStor01/01_Test/$(date +\%Y-\%m-\%d)
# Warte Zeit
sleep 120
# Ordner löschen, die Ãlter als 30 Tage sind
find /var/media/ftp/uStor01/01_Test/ -maxdepth 1 -mtime +29 -type d -exec rm -rf {} ';'

#EOF
erstelle aber sicherheitshalber vorher ein Backup von ../01_Test/

[ >/dev/null 2>&1 ist optional, zum unterdrücken der Ausgabe, falls der Ordner schon vorhanden ist]

// Soll Dein 'gefällt mir' zum Ausdruck bringen, dass das Script so funktioniert wie Du es Dir vorgestellt hast?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: schumi20091
Das "gefällt mir" war estmal für deine Hilfe;)!

So wie es aussieht geht es jetzt so wie ich es möchte, mache es jetzt für alle Ordner fertig und werde es erneut testen.

Eine Kleinigkeit hätte cih noch, wenn es also funktioniert...ich würde gerne die Scripte auf eine andere Box packen und von dort aus auf den FTP der anderen Box mich einloggen und die Scripte ausführen. Wie müsste das aussehen?
Das die Links angepasst werden müssen ist mir schon klar, aber wie muss ich es mit den Logindaten im Script reinschreiben?
 
Du nanntest 'Telnet' - läuft das auf Deiner 7590 oder läuft ein andere Dienst, SIAB, Dropbear ect?
(Ob das überhaupt geht weiß ich nicht [via ssh wäre ich mir ziemlich sicher) das "Script" sind ja nur Linux-Basics)
Ein paar Infos wie Du Dir das vorgestellt hast, musst Du noch preisgeben, damit Dir jmd ggf eine passende Lösung in einen [CODE]Schnipsel[/CODE] zurecht macht, der da tiefer in der Materie steckt.
 
Es soll so aussehen:
1. Box 7590 mit der Originalen FritzOS und einem NAS Server mit FTP Server
2. FritzBox mit Freetz Telnet, Dropbear usw.

Die Scripte sollen auf die 2. Box mit Freetz von dort aus soll sich in den FTP Server der 1.Box eingeloggt und das Script ausgeführt werden!

Hatte mal was gefunden..vielleicht hilft es euch weiter:
Code:
hxxp://stratigery.com/scripting.ftp.html
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.