Hallo, ist vielleicht etwas ungewöhnlich, aber mich würde interessieren, ob es eine Möglichkeit gibt, herauszufinden, wie lange sich eine Datei schon in einem Ordner befindet. Gemeint ist nicht der Zeitpunkt des Erstellens sondern der Vergleich ob sich Datei A länger oder kürzer in einem gewissen Ordner befindet als Datei B.
Wie lange befindet sich eine Datei schon im Ordner?
Anmeldungsdatum: Beiträge: 26 |
|
||||||
Projektleitung
Anmeldungsdatum: Beiträge: 12829 |
Das geben Dateisysteme nicht her. Da müsstest Du selbst etwas stricken. |
||||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Die klassischen Linux-Dateisysteme benutzen 3 Zeitstempel für Dateien, atime, ctime und mtime.
Wenn also niemand den Zeitstempel gefälscht hat, ist input00.txt von oben spätestens seit 2019-11-14 02:53:23.266859275 +0100 in dem Ordner, aber ... Aber wenn man ein Archiv entpackt, dann erhält man i.d.R. solche Zeitstempel und nur der umhüllende Ordner ändert seine Stempel. Oft weiß man ja, ob eine Datei aus einem Archiv stammt und ob man an den Rechten manipuliert hat. In den Fällen sollte der Stempel also weiterhelfen. |
||||||
Projektleitung
Anmeldungsdatum: Beiträge: 12829 |
Aber das lässt natürlich beliebig frühere Zeitpunkte zu. Insbesondere taugt das nicht für den Vergleich zwischen zwei Dateien, der im Eingangsposting angefragt war. |
||||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Mit find -newercc kann man 2 Changetimes vergleichen:
Welcher ist newer in einem Kommando:
Und da das aufwendig ist:
|
||||||
Projektleitung
Anmeldungsdatum: Beiträge: 12829 |
Ja, und? Was soll das bringen? Die Changetimes sagen doch gar nicht, wann die Datei im Ordner aufgetaucht ist. Sie sagen höchstens, wann sie spätestens im Ordner aufgetaucht ist. Bei folgendem Ablauf bekommst Du ein falsches Ergebnis:
|
||||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
@rklm: Das weiß ich doch, habe ich doch in meinem ersten Posting schon geschrieben. Das Interesse am Auftauchen-im-Verzeichnis-Datum ist ja eine ungewöhnliche Sache, daher nehme ich an, dass derjenige, der das überwachen will, vorher weiß, ob da Hardlinks drauf gesetzt werden oder der Eigentümer wechselt usw. Dann geht es halt nicht. Aber normalerweise kommt ja nicht alle paar Tage Honk root vorbei, und ändert mal was an den Metadaten. Wenn man Eigentümerwechsel usw. macht, dann ja auch meist, wenn die Datei neu ist oder neu am Ort. Man muss wissen, dass diese Restriktionen zu beachten sind, und ob sie ein Problem sind. |
||||||
Projektleitung
Anmeldungsdatum: Beiträge: 12829 |
Es ist übrigens noch schlimmer: auch Modifikation des Inhalts ändern die Metadaten und damit die ctime:
Alle Zeitstempel ändern sich in diesem Fall gleichmäßig. (auf einem btrfs) |
||||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Da gibt es einen Trick: Einfach den Inhalt der Datei nicht ändern! 😉 Du musst ja auch einräumen, dass sich die neuesten Bytes vorher nicht in der Datei, und damit auch nicht im Ordner befunden haben. Dass ist also nicht diese Datei, die sich schon vorher im Ordner befunden hat. |
||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 26 |
Hallo, vielen Dank erstmal. Ich kann ja mal ganz kurz erklären was ich vorhabe: Ich möchte ein Skript schreiben, das mir in gewissen Zeitabständen den Desktophintergrund wechselt. Dazu gibt es einen Ordner in dem sich der Pool der Bilddateien befindet. Nennt man eine Bilddatei zu einem fest definierten Namen um bzw. kopiert sie mit diesem fest definierten Namen, ist dieses Bild in Zukunft dann der Hintergrund. Nun möchte ich aber nicht zufällig festlegen lassen, welches Bild nun ausgewählt wird, sondern das soll in der Reihenfolge passieren, in der die Bilder in den Ordner gelangt sind (weil in Zukunft immer wieder Bilder hinzukommen) und dann rotieren und am Ende wieder von vorn anfangen. Ich dachte zunächst daran, den Ordner zu scannen, und die darin enthaltenen Bilder in einer Textdatei aufzunehmen. Wenn jetzt neue Bilder hinzukommen werden sie halt am Ende der Datei angefügt und so kann man auch festlegen in welcher Reihenfolge die Dateien ausgewählt werden. Allerdings dachte ich mir, man könne über einen Zeitstempel in den Dateien, den Weg über die Textdatei sparen. |
||||||
Anmeldungsdatum: Beiträge: 17552 Wohnort: Berlin |
Dann würde ich die Dateien ja als symbolische Links dem Verzeichnis zufügen. Die Linknamen dürften kein Whitespace enthalten, um die Verarbeitung zu vereinfachen.
|