Datum von Dateien auf Webservern ändern?
Ich bin jetzt schon einige Zeit auf der Suche nach einem FTP-Programm, einem Web-Filemanager (PHP) oder irgendeiner anderen Lösung, mit der man das Datum und die Uhrzeit einer Datei auf dem Webspace ändern kann. Dies wäre in erster Linie für Folderblog-User interessant, da man so die Sortierreihenfolge (Folderblog sortiert nach der last modification time) im Photoblog ändern könnte. Ich wollte auch bei meinen älteren Photos von der neuen Möglichkeit, die EXIF-Daten ausgeben zu können, Gebrauch machen. Lädt man diese geänderten Photos aber neu auf den Server, erscheinen sie automatisch als neuester Eintrag in der Galerie. Hier wäre eine Änderung der Dateidaten sehr hilfreich.
Bei meinen Nachforschungen habe ich folgende zwei Möglichkeiten zum ändern des Datums einer Datei herausgefunden:
1. MDTM
MDTM steht für last Modification Time und dient normalerweise dem Auslesen der letzten Änderung einer Datei. Dazu ruft man in den meisten FTP-Clients die Funktion “FTP-Commands” (oder ähnliches) auf und wählt dort den Eintrag QUOTE. Dann öffnet sich ein Kommandozeile in der man den Befehl:
MDTM filename
eingibt. Daraufhin erscheint im Statusfenster die Ausgabe der Datei mit dem entsprechenden Änderungsdatum. Zum Setzen des Datums wird der Befehl so aufgerufen:
MDTM YYYYMMDD filename
Also z.B. “MDTM 20050701 test.jpg”. Problem ist: Auf dem Server muß der MDTM-Befehl zugelassen sein und auch das Setzen des Datums unterstützen. Entweder mache ich dabei was grundlegend falsch oder mein Server unterstützt den Befehl nicht völlig. Das Auslesen der Zeit funktioniert, das Setzen anscheinend nicht. FTP-Clients welche die Option “Dateidatum beim Upload beibehalten” anbieten, verwenden eben jenes MDTM-Kommando. Unterstützt also der Server den Befehl nicht (völlig), dann funktioniert auch diese Option nicht.
2. touch()
Die PHP-Funktion touch() erfüllt genau die Anforderungen. Mit Ihr kann man nicht nur das Datum der letzten Änderung einer Datei (filemtime), sondern auch den letzten Zugriff (fileatime) lesen und schreiben. Nun habe ich beim Stöbern durch die PHP-Scripte dieser Welt einen PHP-Filemanager gefunden, der auch Dateimanipulationen mittels touch() zuläßt. Aber: die Seite des Programmautors ist zur Zeit down. Nun versuche ich gerade in PHP ein Script zu schreiben, mit dem ich auf rudimentärste Art die relevanten Daten einer Datei manipulieren kann. Es könnte sich hier aber noch das Problem ergeben, das die Änderungen durch die touch()-Funktion nur möglich sind, wenn man Rechteinhaber (im UNIX’schen Sinne) der zu ändernden Datei ist. Beim Aufruf eines PHP-Scripts ist man aber zunächst einmal ein “Niemand” oder jedenfalls kein “Owner” der Dateien.
Soweit der aktuelle Stand. Mir ist klar, daß es wirklich wichtigere Dinge gibt als das Dateidatum auf einem Webserver zu ändern, aber faszinierend ist, daß offensichtlich kaum Lösungen existieren die dies ermöglichen und ich andererseits auch nicht erkennen kann, warum diese Dateioperation so schwierig zu handhaben ist, wo man doch die Files sonst beliebig löschen, verschieben und umbennen kann.
Falls irgend jemand noch andere Lösungsansätze oder Tips zu den vorgenannten Möglichkeiten parat hat, findet er in mir einen dankbaren Abnehmer. :)
Nachtrag: Ein Workaround für die touch()-Funktion ist hier zu finden.
Artikel: Datum von Dateien auf Webservern ändern?
Datum: Wednesday, 06. July 2005, 17:08 Uhr
Kategorien: Folderblog, Internet, Software
Feed zum Beitrag: RSS 2.0 · Trackback: Trackback-URL
Diesen Artikel kommentieren.
Journal (Artikel)
6. July 2005
@ 18:30
Interessiert mich auch sehr, zumal sich die von dir in Filezilla vermutete Funktion “Datum der Original-Datei beibehalten” als “Nur neuere Überschreiben” rausgestellt hat – also was anderes habe ich zumindest nicht gefunden.
Wenn man das Problem von einer anderen Seite her aufrollt gäbe es aber eine Lösung: Folderblog nicht nach dem Erstellungsdatum, sondern nach dem Dateinamen einer Datei sortieren lassen
Armin (aus dem Folderblog-Forum) hatte ja schon eine unschöne, aber immerhin funktionierende Lösung für das Problem gefunden, welche sich sicher noch etwas optimieren lässt. Er hatte die Sortierfunktion von Folderblog dazu benutzt, indem er eine alphabetische Sortierung eingestellt hat und seine photos numeriert. Zum Beispiel “00020.jpg” (was sich ja “alphabetisch” sortieren lässt…) was dazu führte, dass das neueste Bild (das mit der niedrigsten Ziffer) auch als neuestes dargestellt wird, und zwar unabhängig vom Upload-Zeitpunkt. Doch vermutlich wird dir diese Lösung (wenn du nicht extra alle dateinamen ändern willst) kaum nützen – wie mir leider auch nicht.
Allerdings wäre das ein Workaround (furchtbares Wort), der in Folderblog3, dank der query-String freien URL, auch noch recht passabel aussieht und dem aussehen eines WordPress-Links auch recht nahe kommt wenn man zB. statt reinen Ziffern zum Numerieren das Datum einer Aufnahme verwendet (also zB: 2005-7-6) ...
ich hoffe das hilft dir ein wenig weiter auch wenn es ‘nicht’ der erhoffte Lösungsweg ist.
Ich bitte um Erlaubnis, einen Link zu diesem Artikel im Selfhtml-Forum veröffentlichen zu dürfen, bzw würde dir empfehlen es dort zu probieren, denn dort gibt es in puncto php sehr bewanderte User (die mir auch sofort helfen konnten mit meiner foreach-Schleife in der Kategorie-Index-Seite)
mfg
6. July 2005
@ 19:01
Erik, Danke erst mal. Das mit dem Dateinamen wäre natürlich auch eine Lösung, wobei ich dann aber noch irgendwie die jetzigen Namen meiner Bilder einbauen würde (google-freundlich), z.B. 2005-07-05-Sterbender-Schwan.jgp. Ist dann etwas länger, aber so what. ;)
Auch eine gute Idee ist eigentlich die Verwendung der fbdate Variable. Ich müßte mir die Sortierfunktion mal genauer anschauen, aber wenn ich mein Format dort z.B. auf 2005-07-05 ändere, ließe sich das prima sortieren. Wobei ich ja grundsätzlich die Modification-Sortierung gar nicht so schlecht finde: irgendein Bild uploaden und zack ist es das neueste (ohne über den Dateinamen grübeln zu müssen). Das Ändern des Datums ist ja nur im Aungenblick notwendig, wenn ich die älteren Bilder mit EXIF-Daten füttere und wieder hochlade. Ansonsten hab ich ja mit dem Sortieralgorythmus keine Probleme…
Na ja, ich versuche mal mein Script fertig zu kriegen. Ist vom PHP-Aufwand her kein Problem, aber Danke für den Link zum SelfHTML-Forum. Warum alles doppelt erfinden, nä? ;-)
Kind Regards,
John
6. July 2005
@ 19:39
naja, aber ich hatte schließlich schon selbiges Problem und da gings nicht um Exif, Armins weg macht ja allgemein Sinn wenn ein Bild erneut hochgeladen wird. Ich hatte zB überlegt, ob ich nicht den Dateinamen einfach noch zusätzlich den Kategorienamen vorwegstelle, damit in der “Zeige Alle” Übersicht zusammen erscheint was zusammen gehört… (aber: ein bild in mehreren kategorien, ...)
Will sagen: ne Lösung für das Problem könnte einem noch sehr oft helfen, wenn man mal irgendetwas umstellt.
so hatte ich mir das auch gedacht…evtl. kann man ja die URL auch aus und dateinamen kombinieren, was dann den Vorteil der immergleichen Sortierung und einer “netten”, sinnigen URL hätte allerdings kommts mir grad, was wenn du nicht ein altes bild modifizieren (zB exif) willst sondern später eins hinzufügen willst also zb dazwischen.jpg soll zwischen 250.jpg und 249.jpg … o.0
mfg
7. July 2005
@ 11:00
[...] utzt und die Sortierung der Bilder danach vorgenommen. Wenn das funktioniert, hat sich die Suche nach einer Möglichkeit das Dateidatum zu ändern, vorerst erledigt [...]
28. August 2005
@ 15:20
Hallöchen,
das gleiche Problem habe ich auch und schon nach kurzem Googeln fand sich die Erklärung, weshalb der Abruf, nicht aber eine Veränderung der letzten Dateiänderung möglich ist.
Das problem mit dem MDTM-Befehl erklärt sich wie folgt:
MDTM
Kurzform für MoDification TiMe,
this command is used by the client to request the modification time of a file on the server. This command is not defined in any formal RFCs (yet), but is a commonly implemented FTP command. Note that this command cannot be used to change the modification time of the file on the server; it only reports on the file’s modification time.
So steht es in den allgemeinen Spezifikationen. Demnach sind änderungen via MDTM nicht möglich.
Gruß,
corvin
28. August 2005
@ 16:51
Hallöchen nochmal,
habe noch diverse Filemanager getestet – unter anderem auch den Xaldon File Commander 1.3 und der sagt eindeutig, daß eine Änderung des Dateidatums auf Servern nicht möglich ist. Gleichwohl würde mich das PHP-Script auch interessieren, so Du es denn findest. Ich habe etliche Dutzend PHP-Foren danach abgesucht – Ergebnis= 0 keinerlei Anhaltspunkte für ein solches Script.
Bis dann,
corvin
28. August 2005
@ 17:42
Hallo corvin,
es gibt einen Workaround um Dateien “touchen” zu können, für die man keine Rechte besitzt. Diese Lösung fand jetzt auch in folderblog Einfluß:
Workaround
Wenn Du dies also in Deinen PHP-Code einbaust, sollte es funktionieren. =)
LG John
11. November 2006
@ 19:32
MNir hat es auch sehr viel weiter geholfen. Vielen Dank!