Hallo Liste, seit einigen Stunden google ich nun nach einer Loesung. Leider bin ich entweder zu blind oder kann nicht mehr richtig denken. Das Problem ist folgendes: Ich sichere mehrere Server naechtens mit rsync. Dafuer habe ich mir ein script geschrieben, dass auch all das macht, was es soll. Nun moechte ich eine Funktion hinzufuegen, die mir absolut nicht von der Hand geht. Die Verzeichnisse werden nach /data/name20050914 /data/name20050915 usw. gesichert. Dies sind hardlinks auf /data/name Im script frage ich nun ab, wieviel Platz noch auf der Sicherungspartition ist. Sollte der belegte Platz bei 95% anlangen, moechte ich gerne den aeltesten hardlink loeschen. Mein Problem: Wie finde ich innerhalb des scripts heraus, welches der aelteste Link ist? Die Timestamps etc sind identisch, da ja so gewollt. Bin fuer alle "Denk-Anstoesse", aber auch natuerlich Loesungen dankbar. gruss/torbjoern -- [ t o r b j o e r n g r i p p ]
Hallo, Am Wed, 21 Sep 2005, Torbjörn Gripp schrieb: [..]
Die Verzeichnisse werden nach /data/name20050914 /data/name20050915 [..] Mein Problem: Wie finde ich innerhalb des scripts heraus, welches der aelteste Link ist?
ls -at /data/name* | head -1 ## nach timestamp ls /data/name* | sort | head -1 ## nach Dateiname -dnh -- "But you should never let rules overrule common sense - if you do, you end up doing stupid things" -- Linus Torvalds
David Haller wrote:
Hallo,
Am Wed, 21 Sep 2005, Torbjörn Gripp schrieb: [..]
Die Verzeichnisse werden nach /data/name20050914 /data/name20050915 [..] Mein Problem: Wie finde ich innerhalb des scripts heraus, welches der aelteste Link ist?
ls -at /data/name* | head -1 ## nach timestamp ls /data/name* | sort | head -1 ## nach Dateiname
-dnh
Hallo, vielen Dank fuer eure tipps! Doch die "Tuecken" liegen in der Macht der linux-Werkzeuge, wie z.B. ls. So wie vorgeschlagen funktioniert es nicht. Die Verzeichnisse, die so "zurueckgeliefert" werden, sind in der Regel . oder .. oder rekursiv in die Unterverzeichnisse hinein und damit leer. -- Der timestamp steht ja auch nicht zur Verfuegung! Aber eine Nacht Schlaf und die Anregungen haben weiter geholfen! Ein: ls /data | grep name2 | head -1 liefert genau den gewuenschten Eintrag zurueck - und nur den. -- [ t o r b j o e r n g r i p p ] senior systemadministrator opus 5 interaktive medien gmbh grossneumarkt 50 20459 hamburg fon: +49(0)40 350174-439 fax: +49(0)40 350174-404 mobil: 0175 9326096 mailto:gripp@opus5.de http://www.opus5.de
Am Donnerstag, 22. September 2005 09:14 schrieb Torbjörn Gripp:
David Haller wrote:
Hallo,
Am Wed, 21 Sep 2005, Torbjörn Gripp schrieb: [..]
Die Verzeichnisse werden nach /data/name20050914 /data/name20050915
[..]
[...] vielen Dank fuer eure tipps! Doch die "Tuecken" liegen in der Macht der linux-Werkzeuge, wie z.B. ls. So wie vorgeschlagen funktioniert es nicht. Die Verzeichnisse, die so "zurueckgeliefert" werden, sind in der Regel . oder .. oder rekursiv in die Unterverzeichnisse hinein und damit leer. -- Der timestamp steht ja auch nicht zur Verfuegung! Aber eine Nacht Schlaf und die Anregungen haben weiter geholfen! Ein: ls /data | grep name2 | head -1 liefert genau den gewuenschten Eintrag zurueck - und nur den.
ls kann noch mehr: ls -d /data/name2* | head -1 Grüße, Thomas Mack
Thomas Mack wrote:
Am Donnerstag, 22. September 2005 09:14 schrieb Torbjörn Gripp:
David Haller wrote:
Hallo,
Am Wed, 21 Sep 2005, Torbjörn Gripp schrieb: [..]
Die Verzeichnisse werden nach /data/name20050914 /data/name20050915 [..]
[...] vielen Dank fuer eure tipps! [...}
ls kann noch mehr:
ls -d /data/name2* | head -1
Grüße, Thomas Mack
Stimmt! Habe diesen Schalter dummerweise falsch angewandt. (immer noch ein sort oder aehnliches mit eingebaut.--obwohl ich ls --help zehmal rauf und runter gelesen habe...Aber wie gesagt: Es ist immer gut ein Problem auch mal liegen zu lassen :-) gruss/torbjoern -- [ t o r b j o e r n g r i p p ]
Torbjörn Gripp wrote at Thursday, September 22, 2005 9:14 AM
So wie vorgeschlagen funktioniert es nicht. Die Verzeichnisse, die so "zurueckgeliefert" werden, sind in der Regel . oder .. oder rekursiv in die Unterverzeichnisse hinein und damit leer. -- Der timestamp steht ja auch nicht zur Verfuegung!
Nur als weitere Anregung(en): ein ls -1d name2* liefert dir die - bei deiner Nomenklatur - nach Datum sortierte Liste an Verzeichnissen ohne Rekursion in die Verzeichnisse. Wenn Du allerdings nachdem Backup ein "touch <Sicherungsverzeichnis>" machst, könntest Du sogar den Timestamp verwenden.
Aber eine Nacht Schlaf und die Anregungen haben weiter geholfen! Ein: ls /data | grep name2 | head -1 liefert genau den gewuenschten Eintrag zurueck - und nur den.
Naja wenn das funktioniert, auch schön ;-) Regards, Markus
Markus Heidinger wrote:
Torbjörn Gripp wrote at Thursday, September 22, 2005 9:14 AM
So wie vorgeschlagen funktioniert es nicht. Die Verzeichnisse, die so "zurueckgeliefert" werden, sind in der Regel . oder .. oder rekursiv in die Unterverzeichnisse hinein und damit leer. -- Der timestamp steht ja auch nicht zur Verfuegung!
Nur als weitere Anregung(en): ein ls -1d name2* liefert dir die - bei deiner Nomenklatur - nach Datum sortierte Liste an Verzeichnissen ohne Rekursion in die Verzeichnisse. Wenn Du allerdings nachdem Backup ein "touch <Sicherungsverzeichnis>" machst, könntest Du sogar den Timestamp verwenden.
Aber eine Nacht Schlaf und die Anregungen haben weiter geholfen! Ein: ls /data | grep name2 | head -1 liefert genau den gewuenschten Eintrag zurueck - und nur den.
Naja wenn das funktioniert, auch schön ;-)
Regards, Markus
Hallo Markus, habe ich aufgegriffen und um | head -1 erweitert. Damit bekomme ich genau das zu loeschende Verzeichnis geliefert und spare mir den grep. ...ein touch wollte ich nicht machen. Vielen Dank! gruss/torbjoern -- [ t o r b j o e r n g r i p p ]
Torbjörn Gripp wrote at Thursday, September 22, 2005 10:33 AM
habe ich aufgegriffen und um | head -1 erweitert. Damit bekomme ich genau das zu loeschende Verzeichnis geliefert und spare mir den grep. ...ein touch wollte ich nicht machen. Vielen Dank!
Freut mich, dass ich eine Anregung geben konnte. Nachdem ich eine ganz ähnliche Backup-Logik verwende, hätte ich aber noch eine Frage: wie stellst Du die Plattenbelegung in Deinem Skript fest? Ich nehme mal an, mit einem "df" ... Die Frage ist nur, wie extrahierst Du hier den Prozentsatz? Nicht, dass ich da keinen Weg sehe, aber vielleicht kann ich mir die Grübelei ersparen ... Danke, Markus
Markus Heidinger wrote:
Torbjörn Gripp wrote at Thursday, September 22, 2005 10:33 AM
habe ich aufgegriffen und um | head -1 erweitert. Damit bekomme ich genau das zu loeschende Verzeichnis geliefert und spare mir den grep. ...ein touch wollte ich nicht machen. Vielen Dank!
Freut mich, dass ich eine Anregung geben konnte.
Nachdem ich eine ganz ähnliche Backup-Logik verwende, hätte ich aber noch eine Frage: wie stellst Du die Plattenbelegung in Deinem Skript fest? Ich nehme mal an, mit einem "df" ... Die Frage ist nur, wie extrahierst Du hier den Prozentsatz? Nicht, dass ich da keinen Weg sehe, aber vielleicht kann ich mir die Grübelei ersparen ...
Danke, Markus
Hallo Markus, das hier muss ich zugeben ist nicht auf meinem "Mist" gewaxen.. Bin mit regulaeren Ausdruecken nicht so gut bewandert, doch es erfuellt seinen Zweck deshalb so gut, weil es mir %-Angaben liefert und somit auf jeder Partition, egal wie gross sie ist, seine Aufgabe erfuellt. Also: df /verzeichnis | tail -n1 | sed -e "s/.* \([0-9]\{1,3\}\)%.*/\1/" wobei sed die Prozentangabe herausfiltert. gruss/torbjoern -- [ t o r b j o e r n g r i p p ]
Hallo, Torbjörn Gripp wrote:
Mein Problem: Wie finde ich innerhalb des scripts heraus, welches der aelteste Link ist? Die Timestamps etc sind identisch, da ja so gewollt. Bin fuer alle "Denk-Anstoesse", aber auch natuerlich Loesungen dankbar.
gruss/torbjoern
beim Datumsformat, dass Du verwendest, sollte Dir ein `ls /data/` doch den ältesten Ordner als allererstes Ergebnis liefern, oder? Mein Idee wäre also, die Ausgabe davon in nem Array abzulegen und das erste bzw. nullte Element (Wie wird in der bash ein Array indiziert?) für den Lösch-Befehl rauszugreifen. Wie genau Du jetzt den Array füllst, kann ich leider nicht sagen. Hoffe, der Ansatz hilft weiter :-) Grüße, Felix
participants (5)
-
David Haller
-
Felix Nawroth
-
Markus Heidinger
-
Thomas Mack
-
Torbjörn Gripp