Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
zeitstempel beim kopieren von dateien

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dubdidu



Anmeldungsdatum: 15.04.2006
Beiträge: 26

BeitragVerfasst am: 15. Apr 2006 3:56   Titel: zeitstempel beim kopieren von dateien

hallo zusammen Smile


ich gehöre nun auch als absoluter neuling zu den linux-nutzern (suse 10.0 - kde) und bin richtig zufrieden damit.

nur eine sache bekomme ich einfach nicht geregelt - habe schon zig stunden im internet bei der suche nach einer lösung verbracht, leider ohne erfolg.

eines erscheint mir vorab wichtig zu sein: die festplatte von meinem compi ist so partitioniert bzw. aufgeteilt, dass auf einer partition (halt für das betriebssystem gedacht) suse installiert ist und die andere partition für die daten sein soll; allerdings ist letztere partition eine fat32(!).

mein folgendes problem tritt auch nur innerhalb der fat32-partition auf (dies scheint mir "gefühlt" auch der haken an der sache zu sein):

wenn ich eine datei kopiere (ich mache das mit dem "konqueror"; kopieren/einfügen), dann hat diese kopierte datei automatisch den aktuellen zeitstempel (im sinne der letzten veränderung), und genau das möchte ich nicht. wenn ich also zum beispiel eine datei "xyz.pdf" (zuletzt geändert am 20.05.2000) von einem ordner in einen anderen ordner kopiere, dann hat die kopie dieser datei den real-aktuellen zeitstempel (mstamp?).

mir geht es darum, dass nur dann der zeitstempel aktualisiert werden soll, wenn ich eine datei öffne, den inhalt verändere und dann wieder speichere - und eben nicht durch bloßes kopieren der zeitstempel verändert/aktualisiert wird.

ich glaube schon herausgefunden zu haben, dass man dies mit einer einfachen zeile innerhalb der konsole machen kann (stichwort -p bzw. "preserve").
der "trick" mit der konsole hilft mir schonmal weiter, aber ich suche nach einer lösung, die ich sozusagen in der verantwortlichen instanz (yast, kontrollzentrum, kernel, konqueror oder wo auch immer dieses verhalten festgelegt ist) fest verankern kann.

mein ziel ist also, dass der zeitstempel der letzten änderung einer datei beim bloßen kopieren (mit dem konqueror) so belassen wird wie er ist; und zwar zum einen immer, und zum anderen insbesondere auf der partition mit fat32.


bin ich noch zu retten? Wink

tausend dank schonmal für tips und anregungen - bin für jeden hinweis dankbar Smile
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 15. Apr 2006 6:28   Titel: Re: zeitstempel beim kopieren von dateien

Hm. Eigentlich ist das Verhalten so wie es ist absolut erwünscht. Wenn man eine Datei kopiert, erzeugt man ja eine neue Datei -- und die ist nunmal zum Zeitpunkt des Kopierens erzeugt.

cp und einige andere Programme (tar, cpio, etc.) können *nachträglich* einige Datenfelder der neu erzeugten Datei so ändern, dass sie *ähnlich* der Originaldatei erscheint. Das muss das jeweilige Programm aber machen!

Wenn du das Datum der ersten Erzeugung einer Datei irgendwo unveränderbar speichern möchtest, musst du dies in der Datei selbst oder im Dateinamen machen. Das ist sowieso eine gute Idee, falls du Dateien schnell&simpel versionieren willst.

Janka
 
Benutzer-Profile anzeigen Private Nachricht senden

komsomolze



Anmeldungsdatum: 03.03.2006
Beiträge: 429

BeitragVerfasst am: 15. Apr 2006 13:14   Titel:

hab es gerade mal ausprobiert (Versuch macht klug)

Beim Kopieren werden atime und mtime der alten Datei uebertragen.
'--preserve=timestamps' scheint der Standard zu sein.

'--no-preserve=timestamps' alle times bekommen den neuen Wert
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 15. Apr 2006 15:20   Titel:

komsomolze hat folgendes geschrieben::
hab es gerade mal ausprobiert (Versuch macht klug)

Beim Kopieren werden atime und mtime der alten Datei uebertragen.
'--preserve=timestamps' scheint der Standard zu sein.

Bei mir (SuSE9.3, Kernel 2.6.16) nicht. Hier erhalten die Kopien von cp die aktuelle Zeit als mtime, atime und ctime. Und natürlich das Original jeweils die Zeit der letzten Kopie als atime.

Janka
 
Benutzer-Profile anzeigen Private Nachricht senden

dubdidu



Anmeldungsdatum: 15.04.2006
Beiträge: 26

BeitragVerfasst am: 15. Apr 2006 16:15   Titel:

hallo nochmals und danke für die antworten Smile


das argument des "erwünschten verhaltens" von janka kann ich gut nachvollziehen - die kopie einer datei ist im prinzip etwas "neues" und bekommt darum den aktuellen zeitstempel (auch den der letzten modifikation).

andererseits finde ich, dass beim bloßen kopieren einer datei der inhalt ja nicht verändert wird, und darum der zeitstempel der letzten veränderung nicht aktualisiert werden bräuchte. (mir geht es ja auch nicht um das datum der ersten erzeugung, wobei ich die idee, diese im dateinamen selbst zu verewigen, auch prima finde).

aber das ist letzten endes bestimmt nix weiter als eine ansichtssache des jeweiligen nutzers. Smile


jedenfalls wird bei mir auf der partition, auf welcher linux suse 10.0 installiert ist, der zeitstempel beim kopieren einer datei nicht angetastet (im sinne der letzten änderung). dieses verhalten kenne ich auch noch aus früheren (windows)-zeiten - und bei komsomolze klappt es ja ebenfalls mit dem "preserve"-standard.

nur bei vorgängen auf dem zweiten teil meiner festplatte (die fat32-partition für daten und dateien) wird beim kopieren der zeitstempel (mstamp) leider immer aktualisiert.


ich versuche mal anhand der bisherigen erkenntnisse eine "windige these":

>> das unterschiedliche verhalten mit den zeitstempeln hat etwas mit meiner fat32-partition zu tun.
es gibt keine möglichkeit für einen anfänger, den "preserve"-modus beim kopieren irgendwo als standard einzustellen (also irgendwo auf einer tieferen ebene des systems, welche auch bei kopiervorgängen auf der fat32-partition greift sowie auch das verhalten vom konqueror entsprechend beeinflusst). <<

wenn das so stimmt(?) müsste die lösung darin liegen, die fat32-partition loszuwerden und entsprechend neu (linux/suse-konform) zu formatieren?


bis bald und liebe grüße Smile
 
Benutzer-Profile anzeigen Private Nachricht senden

komsomolze



Anmeldungsdatum: 03.03.2006
Beiträge: 429

BeitragVerfasst am: 15. Apr 2006 17:12   Titel:

Janka hat folgendes geschrieben::
Bei mir (SuSE9.3, Kernel 2.6.16) nicht. Hier erhalten die Kopien von cp die aktuelle Zeit als mtime, atime und ctime. Und natürlich das Original jeweils die Zeit der letzten Kopie als atime.
tschuldigung, muss mich korrigieren:
Mit cp ist es so wie janka beschreibt. Ich hatte es mit midnight-commander ausprobiert.
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 15. Apr 2006 22:02   Titel:

dubdidu hat folgendes geschrieben::

nur bei vorgängen auf dem zweiten teil meiner festplatte (die fat32-partition für daten und dateien) wird beim kopieren der zeitstempel (mstamp) leider immer aktualisiert.

FAT hat keine getrennten Felder für ctime, atime, mtime, sondern ziemlich kaputtdesignte Zeit/Datumsfelder.
Code:

/usr/src/linux/Documentation/filesystems/vfat.txt:

struct directory { // Short 8.3 names
    unsigned char name[8];          // file name
    unsigned char ext[3];           // file extension
    unsigned char attr;             // attribute byte
    unsigned char lcase;    // Case for base and extension
    unsigned char ctime_ms;   // Creation time, milliseconds
    unsigned char ctime[2];   // Creation time
    unsigned char cdate[2];   // Creation date
    unsigned char adate[2];   // Last access date
    unsigned char reserved[2];  // reserved values (ignored)
    unsigned char time[2];          // time stamp
    unsigned char date[2];          // date stamp
    unsigned char start[2];         // starting cluster number
    unsigned char size[4];          // size of the file
};


Was der Linux-Kernel aus dieser Schrottvorlage macht, habe ich jetzt auf die Schnelle aber nicht gefunden.

Janka
 
Benutzer-Profile anzeigen Private Nachricht senden

dubdidu



Anmeldungsdatum: 15.04.2006
Beiträge: 26

BeitragVerfasst am: 16. Apr 2006 0:19   Titel:

und wieder einmal hallo Smile


janka, tausend dank erstmal - das sieht ja wirklich danach aus als hätte der linux-kernel ein problem mit den in diesem falle unzureichenden fat-"features".

scheint so als müsste ich meine betreffende fat-partition noch einmal linux-konform neu formatieren (oder es vielleicht mit solch einem tool wie dem midnight-commander ausprobieren).

super, mit diesen erkenntnissen kann ich mich erstmal in die experimentierkammer begeben - vielen dank nochmals. Smile


es bliebe vielleicht nur noch eine frage übrig:

janka benutzt suse 9.3 und die zeitstempel werden beim kopieren (mtime) aktualisiert - und auch bei komsomolze ist dies so.

ich benutze suse 10.0 und bei mir werden die zeitstempel (zumindest auf der partition mit dem betriebssystem) beibehalten.


dies wiederum klingt danach als wären verschiedene suse-versionen (und/oder kernel-varianten) für dieses unterschiedliche verhalten verantwortlich. auch dann, wenn die kopiervorgänge nicht auf fat-partitionen stattfinden, sondern beispielsweise auf "reiserfs" (wie bei meiner partition für das betriebssystem).

könnte dies zutreffen?


in diesem sinne und liebe grüße Smile
 
Benutzer-Profile anzeigen Private Nachricht senden

Marco Gerber
Gast





BeitragVerfasst am: 16. Apr 2006 13:24   Titel:

tach

Fakt ist:
Ein Kopiervorgang besteht aus dem oeffnen der Quelldatei, dem Erzeugen (oeffnen) der Zieldatei, und dem lesen des Inhaltes aus der Quelldatei und dem Schreiben in die Zieldatei mit anschliessendem Schliessen beider Dateien.
Dafuer stehen Systemcalls zur Verfuegung (open, read, write, close). Dem Dateisystem ist es voellig wurscht, ob der Inhalt beidesmal der selbe ist, denn das System kennt den Kontext des Schreiben der Datei nicht (und braucht ihn auch nicht zu kennen).
Wenn also Zeitdaten veraendert werden sollen, muss dies explizit erfolgen, und zwar wie bereits erwaehnt wurde durch das zustaendige Programm.
Das fuehrt direkt dazu, dass du keine Moeglichkeit hast, dies Systemweit so zu definieren, dass eine "Kopie" ihre Zeitstempel nicht aendern soll (denn dafuer muesste ein "copy" Systemcall existieren, was nicht der Fall ist).

Aus der Manpage von cp geht folgendes hervor:
Code:

       -p     Preserve  the original files' owner, group, permissions (includ-
              ing the set-user-ID and set-group-ID bits), time of last modifi-
              cation and time of last access.  In case duplication of owner or
              group fails, the set-user-ID and set-group-ID bits are  cleared.
              (Note  that  afterwards  source and copy may well have different
              times of last access, since the copy operation is an  access  to
              the source file.)

So, und jetzt muss man noch wissen, dass FAT keine Benutzerrechte kennt, also der Fall "In case duplication of owner or group fails" eintritt. Und damit der Teil von (Note ...).

Wenn du jetzt systemweit diese Eigenschaft willst, musst du einen Systemcall programmieren (und nennst ihn "copy" beispielsweise) und schreibst alle Programme um, die Dateien kopieren koennen.

Ich hoffe, ich konnte verstaendlich darlegen, weshalb dein Vorhaben nie gelingen wird.



Nebenhergesagt; was macht es schon fuer einen Sinn, einer Kopie den selben Zeitstempel zu geben wie dem Original? Wenn naemlich die Kopie veraendert wird, gilt sie ja aus Sicht des Benutzers als eigene Datei (das ist so weltfremd...). Also werden die beiden Dateien nur so lange gleich sein, bis sie veraendert wurden (und das ist wiederum zu tiefst logisch).
Und wenn du herausfinden willst, ob eine Datei eine Kopie (exakte Kopie in Form der nichtveraenderten Datei) ist, kannst du diff verwenden oder ihren md5 hash vergleichen ;}

greetz by
Marco
 

Marco Gerber
Gast





BeitragVerfasst am: 16. Apr 2006 13:26   Titel:

@Janka:
/usr/src/linux/fs/vfat/namei.c

greetz by
Marco
 

FDJler
Gast





BeitragVerfasst am: 16. Apr 2006 14:44   Titel: Re: zeitstempel beim kopieren von dateien

Janka hat folgendes geschrieben::
Hm. Eigentlich ist das Verhalten so wie es ist absolut erwünscht. Wenn man eine Datei kopiert, erzeugt man ja eine neue Datei -- und die ist nunmal zum Zeitpunkt des Kopierens erzeugt.

cp und einige andere Programme (tar, cpio, etc.) können *nachträglich* einige Datenfelder der neu erzeugten Datei so ändern, dass sie *ähnlich* der Originaldatei erscheint. Das muss das jeweilige Programm aber machen!

Wenn du das Datum der ersten Erzeugung einer Datei irgendwo unveränderbar speichern möchtest, musst du dies in der Datei selbst oder im Dateinamen machen. Das ist sowieso eine gute Idee, falls du Dateien schnell&simpel versionieren willst.

Janka

> Eigentlich ist das Verhalten so wie es ist absolut erwünscht
Ich denke, eher nicht. Deshalb behalten brauchbare Werkzeuge mtime und setzten nur ctime auf den aktuellen Wert. Dies ist zwar auch nur ein fauler Kompromiss, aber besser als mtime u. ctime neu zu setzen, und mtime ist m. E. der erhaltenswertere Fakt.
Ganz allgemein könnten etwas mehr Informationen zu Dateien (im Dateisystem!) gespeichert werden (ä. Apfels Ressource-Fork), File/Magic sind doch (prinzipbedingt) nur Krücken.
Ja, und überhaupt, solange Datenbanken und Dateisysteme verschiedene Dinge sind, taugen sie beide nichts.
 

dubdidu



Anmeldungsdatum: 15.04.2006
Beiträge: 26

BeitragVerfasst am: 17. Apr 2006 0:07   Titel:

und abermals hallo Smile

vielen dank marco, ich habe den kontext des zusammenhangs verstanden.
insbesondere war mir nicht bekannt, dass "fat" weder benutzerrechte erkennt noch felder für die diversen zeitstempel besitzt.

insofern dürfte mein problem anhand der erkenntnis gelöst sein, mich von "fat" zu trennen und die festplatten-partition entsprechend konform neu zu formatieren.
beispielsweise mittels "reiserfs", denn diese struktur befindet sich ja schon auf meiner ersten (betriebssystem)-partition und verhält sich beim kopieren meinen wünschen entsprechend. wenngleich dieses verhalten wohl von der norm abzuweichen scheint(?) - siehe die erfahrungswerte von janka und komsomolze.


was den sinn oder unsinn von beibehaltenen zeitstempeln angeht, kann ich nur sagen, dass zumindest für mich ein unangetastetes "mtime" beim kopieren wichtig ist. ich arbeite im sinne eines gesamtprojekts mit sehr vielen textdateien gleichzeitig und kopiere diese je nach bearbeitungsstatus (und der ordnung halber) immer wieder in entsprechende ordner (hin und her). dabei ist der "mstamp" insofern wichtig, als dass ich einzelne textdateien bzw. deren status anhand der letzten änderung ihres inhalts zuordnen können muss.

in diesem sinne und nochmals vielen dank Smile
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy