Seite 2 von 2

AW: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Mo 16. Okt 2017, 22:42
von FireBird
Na dann sind wir ja schon dort, wo wir hinwollen. Das müsste dann der komplette Befehl sein.

find /volume1/Amaryllo/iSSa0bs1k -type d -name "20*" -maxdepth 1 -cmin +120 -exec rm -r {} \;

Was machen die Optionen:

-type d ... Nur Verzeichnisse prüfen, keine Dateien
-name "20*" ... Nur Verzeichnisse prüfen, deren Namen mit "20" beginnen. Dann wird nicht auch das @eadir-Verzeichnis gelöscht.
-maxdepth 1 ... Nur die erste Ebene durchsuchen, also das angegebene Rootverzeichnis
-cmin +120 ... Nur Verzeichnisse ausgeben, deren Status vor mehr als 120 Minuten geändert wurden. Die Zahl wirst Du noch anpassen müssen.
-exec ... Die Treffer nicht an die Konsole senden, sondern einen Befehl ausführen
rm -r ... Dateien und Verzeichnisse rekursiv löschen
{} ... Wird von find bei jedem Treffer durch den Verzeichnisnamen ersetzt
\; ... Beendet den exec-Befehl

Zum Testen kannst Du ja alles ab -exec noch weglassen, dann siehst Du, ob nur die gewünschten Verzeichnisse gelöscht werden würden.

AW: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Di 17. Okt 2017, 09:14
von Ricki
Super, das klappt :hello: .
Wenn ich jetzt die Zeit auf 3 Tage ändern möchte dann statt +120 also +2160? oder gibt es ein Tage Befehl?

AW: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Di 17. Okt 2017, 09:27
von FireBird
Der in ctime verwendete Parameter ist in Tagen. So weit ich das verstanden habe, arbeitet ctime nur mit ganzen Zahlen, was bedeutet, dass beispielsweise bei +1 erst nach 2 Tagen gelöscht.

AW: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Di 17. Okt 2017, 09:49
von Ricki
OK, werde ich testen.
Ich vermute dass zu Anfang der Versuche durch den Zugriff über den Mac auf die Ordner der NAS, das Datum sich geändert hat und daher mtime +1 nichts zu tun hatte.
Ich nutze nun Dein Script und alles ist gut. Ich habe ctime +10 statt cmin +120 eingesetzt.
Herzlichen Dank für Deine Mühe und Hilfe. :d rinking: :thanks:

AW: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Di 17. Okt 2017, 09:56
von FireBird
Gern geschehen. :)

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 22. Jan 2023, 01:53
von pflaf
Hallo zusammen,

ich versuche Mal diesen alten Thread wiederzubeleben, vielleicht sind die Accounts hier ja noch aktiv:
Ich habe keine Ahnung von bash (etwas Python und C++ Kenntnisse, ich habe aber nicht das Gefühl dass das was hilft) und habe ein ähnliches Vorhaben wie Ricki. Ich möchte in einem Ordner in dem ich Backups ablege automatisiert alle Unterordner außer dem Neuesten löschen. Der Befehl ist bisher ähnlich, nur so werden aktuell noch alle Ordner gelöscht.

find /volume1/homes/pflaf/Backups/Hauptkatalog_2 -type d -maxdepth 1 -name "20*" -exec rm -r {} \;

Wenn ich das richtig sehe handelt es sich bei {} um eine Liste, die mir rm durchiteriert wird. Falls das der Fall ist, könnte man das vermutlich durch slicing lösen (die Unterordner sind nach YYYY-MM-DD HH.MM.SS benannt, sind also schon in der richtigen Reihenfolge). Wie kann ich da sinnvoll vorgehen? Alternativ könnte man eventuell mit 'find -cnewer' und einer if bedingung (so in die Richtung "rm if -cnewer !=0" nur, dass das in bash vermutlich anders aussieht) arbeiten, das scheint mir aber komplizierter zu sein, weil ich dann den Pfad zum neuesten angeben muss.

LG pflaf

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 22. Jan 2023, 14:33
von FireBird
find -exec bewirkt, dass der Befehl dahinter pro Treffer ausgeführt wird. {} ist dabei nur ein Platzhalter für den Treffer und enthält keine Liste. Die Frage ist, ob die Zeitstempel brauchbar sind, so dass man find -mtime <Tage> oder find –mmin <Minuten> verwenden kann.

Willkommen an Board. :)

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 22. Jan 2023, 15:10
von pflaf
Oh super, da hab ich Glück gehabt, danke für deine Antwort!

Ich verstehe, schade, das wäre eine schöne Lösung gewesen. Gibt es eine Möglichkeit auf die gefundenen Pfade zuzugreifen und dann iterativ die einzelnen Verzeichnisse zu löschen?

Die Zeitstempel sind leider nicht brauchbar, weil die Backups manuell und nur bei Bedarf durchgeführt werden. Wenn ich das Programm nicht nutze, werden keine Backups erstellt und ich laufe Gefahr, dass das NAS das aktuelle Backup löscht.

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 22. Jan 2023, 16:05
von FireBird
Vielleicht klappt die Geschichte?

Code: Alles auswählen

ls -1r 20* | tail -n +2 
ls gibt die Liste aller Verzeichnisse aus, sortiert sie aber umgekehrt, wodurch das jüngste Verzeichnis ganz oben stehen sollte. tail gibt die letzten 10 Zeilen aus. Mit der Option „-n +2“ gibt man vor, dass tail mit der zweiten Zeile beginnen soll.

Wenn das klappt muss man die Ausgabe noch in eine Löschschleife weiterleiten.

Code: Alles auswählen

 | while read i ; do echo "deleting $i" ; rm -r  "$i" ; done
Hoffentlich ist danach nicht Deine Platte done. :und_weg:

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Di 24. Jan 2023, 11:53
von pflaf
ich habs so zusammengebastelt, ich bin mir nicht ganz sicher ob das so gedacht war:

Code: Alles auswählen

find /volume1/homes/pflaf/Backups/Hauptkatalog_2  ls -1r 20* | tail -n +2
bekomme aber die Fehlermeldung

find: unknown predicate `-1r'

wenn ich '-1r' rausnehme, bekomme ich in der Ausgabe

find: `ls': No such file or directory
find: `20*': No such file or directory
/volume1/homes/pflaf/Backups/Hauptkatalog_2/1
/volume1/homes/pflaf/Backups/Hauptkatalog_2/3
/volume1/homes/pflaf/Backups/Hauptkatalog_2/4
/volume1/homes/pflaf/Backups/Hauptkatalog_2/5
/volume1/homes/pflaf/Backups/Hauptkatalog_2/6
/volume1/homes/pflaf/Backups/Hauptkatalog_2/7
/volume1/homes/pflaf/Backups/Hauptkatalog_2/8
/volume1/homes/pflaf/Backups/Hauptkatalog_2/9
/volume1/homes/pflaf/Backups/Hauptkatalog_2/10
/volume1/homes/pflaf/Backups/Hauptkatalog_2/2
/volume1/homes/pflaf/Backups/Hauptkatalog_2/2012
/volume1/homes/pflaf/Backups/Hauptkatalog_2/2019


ich habe in dem Verzeichnis ein paar Testordner angelegt, tatsächlich sind sie nicht "alphabetisch" sondern nach Erstellungszeit sortiert, der neueste ist ganz unten.
Das führt ja schon in die richtige Richtung.
Hoffentlich ist danach nicht Deine Platte done. :und_weg:
:cry:

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Di 24. Jan 2023, 12:03
von FireBird
Mein Lösungsansatz war ohne find, Du musst vorher im richtigen Verzeichnis stehen.

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Sa 11. Feb 2023, 12:08
von pflaf
Sorry dass ich mich nicht mehr gemeldet habe, hatte einiges um die Ohren... Jetzt hatte ich endlich wieder Zeit zum rumprobieren. Ich habe versucht mit cd in das Verzeichnis zu kommen, und den Code testweise auf

Code: Alles auswählen

cd /volume1/homes/pflaf/Backups/Hauptkatalog_2 | tail
reduziert.
Damit habe ich ja eigentlich nur die Einschränkungen rausgenommen, dass das Verzeichnis mit "20" beginnen soll und dass das erste Verzeichnis übersprungen wird. Leider bekomme ich so eine komplett leere Ausgabe, obwohl der Verzeichnis nicht leer ist? Mit

Code: Alles auswählen

cd /volume1/homes/pflaf/Backups/Hauptkatalog_2 | ls
bekomme ich die Einträge im home Verzeichnis meines Adminaccounts von dem aus ich die Scripte laufen lasse. Ist das ein Problem wenn ich das von einem anderen Account aus mache? Sollte doch eigentlich nicht problematisch sein?
Ah und ohne den Trennstrich | meckert die Ausgabe dass cd nicht mehr Argumente nimmt.

Ab diesem Punkt herrscht bei mir jetzt wieder Ratlosigkeit...

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: Sa 11. Feb 2023, 12:26
von pflaf
Okay ich wollte eigentlich nur was blödes ausprobieren, und habe es mal mit

Code: Alles auswählen

ls /volume1/homes/pflaf/Backups/Hauptkatalog_2
versucht, da kam die ganze Liste. Mit

Code: Alles auswählen

ls /volume1/homes/pflaf/Backups/Hauptkatalog_2 -1r 20* | tail -n +2 
habe ich aber keinen weiteren Erfolg, vor der Liste steht jetzt noch
ls: cannot access '20*': No such file or directory
gleiches wenn ich -name davor schreibe, nur dass die Einträge danach jetzt nicht mehr untereinander stehen sondern durch Kommas getrennt in einer Zeile. Vielleicht ein anderer Datentyp oder so. Außerdem tauchen jetzt (die darübergelegenen Verzeichnisse?) "." und ".." mit auf.
mit

Code: Alles auswählen

ls /volume1/homes/pflaf/Backups/Hauptkatalog_2 | tail -n +2 
kriege ich die Liste wieder anstandslos ausgegeben, Elemente werden allerdings nicht übersprungen.
Jetzt hab ichs noch mit

Code: Alles auswählen

ls /volume1/homes/pflaf/Backups/Hauptkatalog_2 | -1r | tail -n +2
versucht, da wird der Befehl -1r gar nicht erkannt...

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 12. Feb 2023, 20:31
von FireBird
Das Pipe-Zeichen | leitet die Ausgabe eines Befehls zum nächsten weiter. Da Change Directory (cd) das Verzeichnis wechselt, aber nichts ausgibt, ist es korrekt, dass beim ersten Befehl im Beitrag #32 nichts ausgegeben wird. Im zweiten Befehl ergibt das | dann keinen Sinn, da Du eigentlich 2 Befehle trennen möchtest und das macht man mit dem Strichpunkt.

Code: Alles auswählen

cd /volume1/homes/pflaf/Backups/Hauptkatalog_2 ; ls
In Beitrag #33 bist Du schon näher dran. Entweder muss der Suchbegriff beim Pfad stehen,

Code: Alles auswählen

ls /volume1/homes/pflaf/Backups/Hauptkatalog_2/20* -1r | tail -n +2
 
oder Du setzt das cd davor und trennst cd und ls mittels ;

Code: Alles auswählen

cd /volume1/homes/pflaf/Backups/Hauptkatalog_2; ls 20* -1r | tail -n +2 
Die letzte Zeile funktioniert deshalb nicht, weil „-1r“ eine Option von ls sein sollte, durch das Pipe aber zum eigenständigen Befehl wird, den es jedoch nicht gibt.

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 12. Feb 2023, 20:43
von FireBird
Übrigens schöne Grüße vom ChatGPT :D
pflaf_ChatGPT.png

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 12. Feb 2023, 22:00
von Ricki
irre dieses ChatGPT :shock:

Re: Synology: Suche Script um alte Ordner mit Inhalt zu Löschen

Verfasst: So 12. Feb 2023, 23:45
von pflaf
Heureka, danke dir!
FireBird hat geschrieben:
So 12. Feb 2023, 20:43
Übrigens schöne Grüße vom ChatGPT :D

pflaf_ChatGPT.png
Okay da hätte ich echt drauf kommen können^^
Ich habs jetzt aber nach deinem Vorschlag von weiter oben gelöst, also ohne if Bedingung, das finde ich eleganter:

Code: Alles auswählen

cd /volume1/homes/pflaf/Backups/Hauptkatalog; ls 20* -1r -d | tail -n +2 | while read i ; do echo "deleting $i" ; rm -r "$i" ; done
ich hab noch -d eingefügt (bei chatgpt erfragt nachdem maxdepth erfolglos war:u:) und was soll ich sagen: ES FUNKTIONIERT!
Jetzt habe ich sogar einen Code den ich verstehe :D (Über die Lösung von chatGPT muss ich dann Mal noch in Ruhe nachdenken...)

Danke nochmal, jetzt kann ich wieder ruhig schlafen!:) :thanks: