macOS Sonoma Aktualisierung des Speicherdatums bei Namensänderung einer Datei?

MilesVorkosigan

Aktives Mitglied
Thread Starter
Dabei seit
14.04.2023
Beiträge
976
Reaktionspunkte
820
Mir ist heute ein Synchronisationsproblem beim Synchronsieren von zwei Verzeichnissen untergekommen.

Ein Kriterium für den Dateivergleich ist dabei das Speicherdatum der Dateien. Allerdings wird das offenbar nicht verändert, wenn ich den Namen einer Datei manuell ändere. Sprich: "DateiA.txt" hat dann dasselbe Speicherdatum, wie "DateiB.txt", wenn ich den Namen von "A" nach "B" geändert habe.
Gewünscht wäre aber, dass die Datei nach Änderung des Dateinamens das aktuelle Datum als Speicherdatum erhält.

Ich habe das im Finder und auch in zwei Dateimanagern ausprobiert. Es scheint wohl ein Verhalten von MacOS zu sein.

Kann man das vielleicht irgendwo ändern oder einstellen?

Danke für jeden Tipp :)
 
Was meint du mit Speicherdatum? Der Begriff ist mir in dem Zusammenhang unbekannt.

Es gibt ein Erstelldatum.
Es gibt ein Änderungsdatum.
Es gibt ein "Zuletzt Geöffnet" Datum.


im Terminal gibt es den befehl touch damit kann man das Änderungsdatum auf den aktuellen zeitstempel setzen.


Da der Dateiname meines wissens nur indirekt zur Datei gehört ist das Verhalten im Finder wie beschrieben korrekt.
 
... sorry, ich meine das "Änderungsdatum". (Die anderen brauche ich in der Regel gar nicht).

Wie gesagt: Trotz Änderung des Dateinamens bleibt das "Änderungsdatum" unverändert. Das erscheint mir merkwürdig, und ich kann es so für meine Zwecke auch nicht brauchen.
Ich hätte erwartet, dass bei einer Änderung an einer Datei auch das Änderungsdatum aktualisiert wird.
 
Wie gesagt: Trotz Änderung des Dateinamens bleibt das "Änderungsdatum" unverändert. Das erscheint mir merkwürdig, und ich kann es so für meine Zwecke auch nicht brauchen.
Ich hätte erwartet, dass bei einer Änderung an einer Datei auch das Änderungsdatum aktualisiert wird.
Der eine will es so, der andere anders.
Wenn du eine Änderung erzwingen willst, kannst du ja die Datei öffnen und aus dem Programm heraus die Datei unter einem anderen Namen abspeichern.
 
Der eine will es so, der andere anders.
Wenn du eine Änderung erzwingen willst, kannst du ja die Datei öffnen und aus dem Programm heraus die Datei unter einem anderen Namen abspeichern.

... hm, wer will denn eine Datei ändern, ohne dass sich das Änderungsdatum ändert? :unsure:

Das scheint mir doch eher ein "Spezialfall" zu sein, als umgekehrt. Beim Änderungsdatum möchte man doch - wie der Name schon impliziert - sehen, wann man die Datei zum letzten Mal "angepackt", also geändert hat.
Wenn das nach einer Umbenennung nicht ersichtlich ist, kommt mir das zumindest ein bisschen seltsam vor.

Aber, man muss ja auch nicht alles verstehen ... ;)
 
Änderung des Dateinamens bleibt das "Änderungsdatum" unverändert.
Wenn du dich statt Miles neuerdings Kilometres nennst, hat sich an »dir« als Menschen ja eigentlich nix geändert. Es ist nur ein neues Etikett für den gleichen Inhalt. Und das ist der Grund hinter der Nichtänderung des Änderungsdatums der Datei.
 
... hm, wer will denn eine Datei ändern, ohne dass sich das Änderungsdatum ändert? :unsure:

Das scheint mir doch eher ein "Spezialfall" zu sein, als umgekehrt. Beim Änderungsdatum möchte man doch - wie der Name schon impliziert - sehen, wann man die Datei zum letzten Mal "angepackt", also geändert hat.
Wenn das nach einer Umbenennung nicht ersichtlich ist, kommt mir das zumindest ein bisschen seltsam vor.

Aber, man muss ja auch nicht alles verstehen ... ;)

man kann das aber alles verstehen, wenn man die Grundlagen dazu kennt:

macOS kennt wie viele Unixoide Systeme mehrere Zeitstempel für Dateien

- create time = Erzeugungszeitpunt
- access time = letzter Zugriff
- change time = letzte Änderung
- modification time = letzte Modifzierung

Der Unterschied zwischen change und modified ist, dass change auch den Änderungen des Dateinamens betrifft, modified sich auf Änderungen des Inhaltes beschränkt.

Im Terminal kannst du alles sehr einfach nachvollziehen

1) lege eine Datei test.txt an

Bash:
echo "Hallo" > test.txt

lass dir das Verzeichnis in Lang-Form anzeigen um den Zeitstempel zu sehen

Bash:
l
>ls -l test.txt
-rw-r--r--  1 xxxx  staff  6  3 Jan 15:28 test.txt

Das zeigt dir die modified time an, die bei der Erzeugung natürlich identisch mit der create time ist. Dazu später mehr.

Ändere nun die Datei mit
Bash:
echo "Wieder hallo" >> test.txt
und lass dir sie mit ls -l anzeigen
Code:
ls -l test.txt
-rw-r--r--  1 simone  staff  19  3 Jan 15:30 test.txt

du siehst die Zeit der letzten Modifikation des Inhaltes.

Andere nun den Dateiname und lasse dir das wiederum mit ls -l anzeigen

Bash:
mv test.txt neu.txt

>ls -l neu.txt
-rw-r--r--  1 xxxx  staff  19  3 Jan 15:30 neu.txt
Du erkennst das die modified time = Zeit der letzten Modifikation (des Inhaltes) unverändert blieb. Wenn du dir aber die change time anzeigen lässt
Bash:
ls -lc neu.txt
-rw-r--r--  1 simone  staff  19  3 Jan 15:33 neu.txt
siehst du den Zeitpunkt der letzten Änderung auch des Dateinamens.

Nun kannst du dir aber auch weiterhin den Zeitpunkt der Dateierzeugung = create time anzeigen lassen.
Bash:
ls -lU neu.txt
-rw-r--r--  1 xxxx  staff  19  3 Jan 15:28 neu.txt
Wenn du nun die Datei mit TextEdit öffnest und _ohne_ sie zu ändern und ohne umzubenennen sie wieder schließt, bleiben alle bisherigen Zeitstempel identisch, aber die access time = Zeit des letzten Zugriffs (auf den Inhalt) wird aktualisiert. Die access time erhälst du mit ls -lu

Code:
>ls -l neu.txt
-rw-r--r--@ 1 xxxx  staff  19  3 Jan 15:30 neu.txt

>ls -lc neu.txt
-rw-r--r--@ 1 xxxx  staff  19  3 Jan 15:42 neu.txt

>ls -lU neu.txt
-rw-r--r--@ 1 xxxx  staff  19  3 Jan 15:28 neu.txt

>ls -lu neu.txt
-rw-r--r--@ 1 xxxx  staff  19  3 Jan 15:42 neu.txt

Du siehst also, es werden durchaus alle Zeitstempel vermerkt. Du musst also nur für deine Synchronisation die korrekten Zeitstempel verwenden.

Edit:
TextEdit ändert die Datei dennoch, darum wird die change time ebenso geändert. Warum, kann ich gerade nur vermuten, dürfte AFAICS an erweiterten Attributen liegen.

Edit 2:
Okay. APFS handhabt access time anders und updated diese nur unter bestimmten Umständen (wenn älter als change time). Das hat einen ähnlichen Effekte, wie das was man eh mit SSD machen sollte, nämlich unnötige Schreibzyklen zu reduzieren. Und jeden Lesezugriff mitzuloggen in der access time ist durchaus nicht notwendig. -> https://apple.stackexchange.com/questions/441754/how-does-file-access-time-updating-work-on-macos
 
Zuletzt bearbeitet:
... hm, wer will denn eine Datei ändern, ohne dass sich das Änderungsdatum ändert? :unsure:

Das scheint mir doch eher ein "Spezialfall" zu sein, als umgekehrt. Beim Änderungsdatum möchte man doch - wie der Name schon impliziert - sehen, wann man die Datei zum letzten Mal "angepackt", also geändert hat.
Wenn das nach einer Umbenennung nicht ersichtlich ist, kommt mir das zumindest ein bisschen seltsam vor.

Aber, man muss ja auch nicht alles verstehen ... ;)

Im Gegenteil, ich fände es total nervig, wenn sich das Datum ändert.

Ich lasse Dateien nach Änderumsdatum sortiert anzeigen, da weiß ich immer, was ich zuletzt
bearbeitet habe. Einen Dateinamen ändere ich schon mal nachträglich und bin froh, dass sich
das Datum dabei nicht ändert.
 
Ist auch nicht logisch dass sich der Inhalt nicht ändert wenn man nur den Namen verändert.

Wenn ich unbedingt möchte das eine Datei mit archiviert wird bei einem Tool was nur nach der change time fahndet, dann kann ich es mit touch datei oder pfad im Terminal “updaten“ ohne was zu ändern.
 
Zuletzt bearbeitet:
Ist auch nicht logisch dass sich der Inhalt nicht ändert wenn man nur den Namen verändert.

doch, es ist logisch.

Der Dateiname ist Teil des Verzeichnisses, sprich er ist an einer ganz anderen Stelle gespeichert, als der Dateiinhalt selbst.
Wenn ich unbedingt möchte das eine Datei mit archiviert wird bei einem Tool was nur nach der change time fahndet, dann kann ich es mit touch datei oder pfad im Terminal “updaten“ ohne was zu ändern.

ein Tool, dass sich ausschließlich auf Zeitstempel verlässt ist nicht sonderlich gut programmiert. Damit erkannt werden kann, ob eine Datei überhaupt auf das Ziel kopiert werden soll und ob sie neueren Datums ist, _muss_ der Dateiname mit einbezogen werden.

Insofern reicht es also aus, bei gleichem Dateinamen auf Quelle und Ziel, die modified time heran zu ziehen.

Benennt man eine Datei auf der Quelle um, so exitiert sie nicht auf dem Zeil unter diesem Namen und wird also gesynct. Ein Zeitstempel ist dazu nicht notwendig.

So funktioniert rsync seit Ewigkeiten. Und das vollkommen zuverlässig
 
Vielen Dank für die ausführlichen Erklärungen - insbesondere an @lisanet (y)

Ich denke, ich habe das System jetzt besser verstanden. Wobei es natürlich auch zutrifft, dass das Sync-Tool den veränderten Dateinamen sowieso erkennt, weil es "denkt", dass es sich um eine andere Datei handelt.

Ich hatte mich nur wegen des Änderungsdatums gewundert - aber jetzt nicht mehr! :)
 
Zurück
Oben Unten