Hallo,
beim Vergleich von zwei Userprofilen (Commands -> Synchronize Dirs) Vista habe ich eine interessante Meldung bekommen:
---------------------------
Total Commander
---------------------------
Error, two files with the same name but different case exist on the remote server!
Because Windows doesn't support this on local drives, you need to delete one of the duplicates before proceeding!
Users\dfrank\AppData\Local\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Microsoft\Windows\UsrCla
Users\dfrank\AppData\Local\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Microsoft\Windows\UsrCla
---------------------------
OK
---------------------------
In der normalen Verzeichnisliste wird Anwendungsdaten korrekt als Größe: <LNK> angegeben, aber anscheinend weiß der Befehl Commands -> Synchronize Dirs nicht so viel damit anzufangen.
Da ich auch nur Vergleichen möchte, sollte mich der totalcmd meiner Meinung nach auch nicht bitten, irgendwelche Änderungen vorzunehmen.
Version:
Total Commander Version 7.01 32 bit (21.6.2007)
Problem mit Vista und Verzeichnis-Links
Moderators: Hacker, Stefan2, white
- ghisler(Author)
- Site Admin
- Posts: 50830
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Offenbar haben Sie da eine rekursive Verlinkung von "Anwendungsdaten" auf sich selbst. Da ist das Synctool leider machtlos.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Stimmt, aber die stammt aus dem "Default User", somit wäre der Total Commander unter Vista nicht mehr in der Lage, zwei ganz normale Userprofile zu vergleichen.
Technisch gesehen halte ich dieses Konstrukt von MS für sehr unglücklich, da sich fast jedes Programm verfangen wird, das rekursiv mit Ordnern arbeiten kann.
Mir ist allerdings noch ein interessanter Punkt bei diesem Link aufgefallen:
der Link verweigert einem also die Rechte den Verzeichnisinhalt zu lesen, wenn man den wirklich in das Verzeichnis Anwendungsdaten wechselt:
Anscheinend macht dies der Total Commander aber nicht, sondern liest nur aus, wohin der Link zeigt und wechselt dann dorthin, wodurch der Schutz vor der Rekursion umgangen wird.
Wie schon erwähnt - dieses Konstrukt von MS halte ich nicht für besonders gelungen - aber solange ein Programm keine Links unterstützt scheint es gewissermaßen zu funktionieren. Programme die Links unterstützen, müssen dagegen einige Prüfungen machen.
Vielleicht liesse sich das Problem lösen indem die Synchronisierung bei Links prüft, ob diese in einen Bereich verzweigen, der sowieso schon geprüft wurde, oder später geprüft wird.
Falls man also ein Konstrukt wie folgendes hat:
C:\a\... (zahlreiche normale Dateien)
C:\a\blubb (link auf C:\x)
C:\x\abc (link auf C:\x)
C:\x\def (link auf C:\x\xyz)
C:\x\ghi (link auf C:\a)
C:\x\xyz\... (zahlreiche normale Dateien)
Wenn man jetzt eine Synchronisierung von C:\x mit irgendeinem anderen Verzeichnis startet, könnte der Total Commander wie folgt vorgehen:
1. Lesen von Verzeichnis C:\x
2. C:\x\abc kann ignoriert werden, da C:\x bereits bearbeitet wurde. Einzig am Ziel muss auch ein Link bestehen, da dieser Link zwangsweise rekursion erzeugt
3. C:\x\def kann (evtl. abhängig von den Optionen ob Links als Links synchronisiert werden sollen) entweder als Unterverzeichnis oder als Link synchronisiert werden, da dieser allein keine Rekursion erzeugt
4. C:\x\ghi müsste für die Synchronisierung als Unterverzeichnis behandelt werden, da das Ziel außerhalb der eigentlich synchronisierten Verzeichnisse liegt
5. C:\a\blubb wird als C:\x\ghi\blubb synchronisiert und zeigt auf C:\x, erzeugt also eine Rekursion, muss also wie Punkt 2 behandelt werden
6. C:\x\xyz ist ein normaler Ordner mit normalen Dateien, also ganz normal synchronisieren.
In diesen Ideen stecken sicher noch Fehler und es fehlen vermutlich auch noch einige Fälle, aber mit diesen Regeln wäre der Total Commander zumindest gegen ein Standard-Vista gewappnet.
Vielleicht läßt es sich ja einrichten, dem Total Commander einige derartige Regeln einzubauen. Ein Punkt ist ja auch, ob Links beim Kopieren im Ziel als Links erhalten bleiben, oder ob Links auf Ordner durch Ordner ersetzt werden - wichtig beim Kopieren eines Userprofils.
Technisch gesehen halte ich dieses Konstrukt von MS für sehr unglücklich, da sich fast jedes Programm verfangen wird, das rekursiv mit Ordnern arbeiten kann.
Mir ist allerdings noch ein interessanter Punkt bei diesem Link aufgefallen:
Code: Select all
C:\Users\Default\AppData\Local>dir /a
Datenträger in Laufwerk C: ist VISTA
Volumeseriennummer: XXXX-XXXX
Verzeichnis von C:\Users\Default\AppData\Local
26.06.2007 09:53 <DIR> .
26.06.2007 09:53 <DIR> ..
26.06.2007 09:53 <VERBINDUNG> Anwendungsdaten [C:\Users\Default\AppData\Local]
....
C:\Users\Default\AppData\Local>icacls Anwendungsdaten
Anwendungsdaten Jeder:(DENY)(S,RD)
NT-AUTORITÄT\SYSTEM:(I)(OI)(CI)(F)
VORDEFINIERT\Administratoren:(I)(OI)(CI)(F)
VORDEFINIERT\Benutzer:(I)(RX)
VORDEFINIERT\Benutzer:(I)(OI)(CI)(IO)(GR,GE)
Jeder:(I)(RX)
Jeder:(I)(OI)(CI)(IO)(GR,GE)
Code: Select all
C:\Users\Default\AppData\Local>cd Anwendungsdaten
C:\Users\Default\AppData\Local\Anwendungsdaten>dir
Datenträger in Laufwerk C: ist VISTA
Volumeseriennummer: FCE0-71A3
Verzeichnis von C:\Users\Default\AppData\Local\Anwendungsdaten
Datei nicht gefunden
Wie schon erwähnt - dieses Konstrukt von MS halte ich nicht für besonders gelungen - aber solange ein Programm keine Links unterstützt scheint es gewissermaßen zu funktionieren. Programme die Links unterstützen, müssen dagegen einige Prüfungen machen.
Vielleicht liesse sich das Problem lösen indem die Synchronisierung bei Links prüft, ob diese in einen Bereich verzweigen, der sowieso schon geprüft wurde, oder später geprüft wird.
Falls man also ein Konstrukt wie folgendes hat:
C:\a\... (zahlreiche normale Dateien)
C:\a\blubb (link auf C:\x)
C:\x\abc (link auf C:\x)
C:\x\def (link auf C:\x\xyz)
C:\x\ghi (link auf C:\a)
C:\x\xyz\... (zahlreiche normale Dateien)
Wenn man jetzt eine Synchronisierung von C:\x mit irgendeinem anderen Verzeichnis startet, könnte der Total Commander wie folgt vorgehen:
1. Lesen von Verzeichnis C:\x
2. C:\x\abc kann ignoriert werden, da C:\x bereits bearbeitet wurde. Einzig am Ziel muss auch ein Link bestehen, da dieser Link zwangsweise rekursion erzeugt
3. C:\x\def kann (evtl. abhängig von den Optionen ob Links als Links synchronisiert werden sollen) entweder als Unterverzeichnis oder als Link synchronisiert werden, da dieser allein keine Rekursion erzeugt
4. C:\x\ghi müsste für die Synchronisierung als Unterverzeichnis behandelt werden, da das Ziel außerhalb der eigentlich synchronisierten Verzeichnisse liegt
5. C:\a\blubb wird als C:\x\ghi\blubb synchronisiert und zeigt auf C:\x, erzeugt also eine Rekursion, muss also wie Punkt 2 behandelt werden
6. C:\x\xyz ist ein normaler Ordner mit normalen Dateien, also ganz normal synchronisieren.
In diesen Ideen stecken sicher noch Fehler und es fehlen vermutlich auch noch einige Fälle, aber mit diesen Regeln wäre der Total Commander zumindest gegen ein Standard-Vista gewappnet.
Vielleicht läßt es sich ja einrichten, dem Total Commander einige derartige Regeln einzubauen. Ein Punkt ist ja auch, ob Links beim Kopieren im Ziel als Links erhalten bleiben, oder ob Links auf Ordner durch Ordner ersetzt werden - wichtig beim Kopieren eines Userprofils.