Verzeichnisname zu lang - Synchronisationsfehler

Wir haben gestern Abend Version 1.5.2 veröffentlicht, dass eine Migration auch bei kürzeren Pfaden erlaubt. Falls durch die Migrierung eine Datei zu lang werden würde, zeigt Cryptomator nun eine sinnvolle Fehlermeldung an und belässt den Tresor im Format 6 (kompatibel zu Version 1.4.x). Der Nutzer muss dann manuell migrieren und evtl. Dateinamen kürzen.

Hallo,

leider tritt bei mir das identische Problem bei der Version 1.53 auf.

Sobald ich eine neue Datei in das entsperrte Laufwerk (Tresor) einfüge, erhalte ich von HiDrive die angehängte Fehlermelung. Leider lassen sich keinerlei neue, in den entsperrten Tresor eingefügte, Dateien mit dem Cloudanbieter synchronisieren, da die verschlüsselten Dateinamen durchgehend länger sind, als vor dem Update.

Bei Dateien, die bereits vor dem Update in meinem Tresor waren, tritt dieser Fehler nicht auf. Über einen Tipp würde ich mich freuen. Vielen Danke.
ProblemCry

1 Like

Cryptomator verlässt sich darauf, dass bereits beim Erstellen, Verschieben oder Auflisten von Dateien und Ordnern eine Fehlermeldung angezeigt wird. Ohne dies kann Cryptomator nicht erkennen, wie lang die Dateinamen sein können und nimmt die aktuelle Standardlänge von 220 Zeichen.

@Gartenstadt Bei dir scheint das Problem zu sein, dass sich nur der Synchronisationsclient von HiDrive beschwert. Cryptomator braucht aber Fehler auf Dateisystemebene.

:warning: Es gibt einen Workaround, aber lese ihn komplett durch bevor du Dinge veränderst

Du kannst händisch eine Dateinamenlänge in der Datei settings.json im Cryptomator Einstellungsverzeichnis %appdata%/Cryptomator/ festlegen.
Suche dazu deinen Tresor unter dem Schlüsselwort directories und füge die Zeile "filenameLengthLimit": XXX wobei du XXX durch dein Limit ersetzten willst.

Damit auch wirklich alle Dateien synchronisiert werden, empfehle ich einen neuen Tresor zu erstellen, dann händisch die Länge anzupassen und schließlich die Daten vom alten in den neuen Tresor zu kopieren.

Summa summarum:

  1. Neuen Tresor im Zielverzeichnis erstellen
  2. Dateinamelängenlimit einstellen (siehe unten)
  3. Daten vom alten in den neuen Tresor kopieren.

Beispielhaft sollte ein Tresor-Eintrag in der settings.json-Datei dann so aussehen:

    {
      "id": "eO89FXzCS0Cs",
      "path": "M:\\tresor",
      "mountName": "tresor",
      "winDriveLetter": "T",
      "unlockAfterStartup": false,
      "revealAfterMount": true,
      "usesIndividualMountPath": false,
      "individualMountPath": "M:\\mnt",
      "usesReadOnlyMode": false,
      "mountFlags": "",
      "filenameLengthLimit": 210
    },
3 Likes

Hallo infeo,

vielen Dank für deine ausführliche Antwort.

Gerade habe ich den Dateipfad zur Masterkey-Datei verkürzt. Zur Erläuterung:

  • zuvor: “E:\Cloud\users\Benutzername\Unterverzeichnis\Unterverzeichnis2\Masterkey”
  • jetzt: “E:\Cloud\users\Benutzername\Unterverzeichnis\Masterkey”

Und tatsächlich, das Problem ist bereits gelöst. Auch vielen Dank für deinen Workaround. Sollte das Problem erneut auftreten, so weiß ich direkt einen Lösungsweg.

Danke infeo!

Ich habe auch das Problem, dass beim Einfügen von weiteren Dateien in meinen Tresor die Synchronisation in die MagentaCloud auf die Bretter geht (ich migriere gerade einen ganzen Schwung in die Cloud).

Zu meinem Verständnis: Cryptomator gibt keine Meldung aus, weil er nicht vorab erkennen kann, ob der “neue” (verschlüsselte) Dateiname größer wird als diese (ominöse) Grenze, die bei manchen Anbietern vorgegeben ist?

Nein. Lass mich dies etwas näher erläutern.

Was Cryptomator kann

Cryptomator weiß die Länge der erzeugten Dateien. Es kann auch die maximnale Länge feststellen, solange diese an das Dateisystem gekoppelt ist und dieses eine sinnvolle Rückmeldung gibt.

Die Problematik

Cloudprovider können ein Dateipfad- (und/oder ein Dateinamen-) längenlimit festlegen. Dieses Limit verursacht irgendwo einen Fehler, entweder direkt auf Systemebene (was Cryptomator erkennt) oder nur einem Sync-Client (was Cryptomator nicht erkennen kann). Soweit, so gut.

Nun ist das leider nicht das einzige Problem. Cloud-Speicher lässt sich in Windows auch über WebDAV als Netzwerklaufwerk einbinden. Jedoch ist die Windows interne WebDAV Client Implementierung fehlerhaft und kann Pfade, die länger sind als 260 Zeichen nicht anzeigen, gibt jedoch nur bei bestimmten Operationen Fehler aus. So lässt sich eine Datei ohne Probleme hineinkopieren oder bei Kenntnis des Dateinamens mit dem Terminal verschieben. Nur anzeigen lässt sich das Verzeichnis mit der Datei nicht mehr.

Lösungen

Das zweite Problem lässt sich durch benutzten eines externen WebDAV client (z.b. [MountainDuck] (https://mountainduck.io/)) umgehen. Aber auch Cryptomator erkennt nun, ob der Tresor auf einem Windows gemounteten WebDAV-Laufwerk liegt und passt dementsprechend die maximale Länge an.

Für Problem 1a (Fehler auf Systemebene) funktioniert das eben auch. Nur Problem 1b lässt sich nicht lösen, da Cryptomator nicht mit der Synchronisations-Anwendung kommunizieren kann.

1 Like

Habe seit der Version 1.5.3 ebenfalls auch wieder Probleme mit der Dateilänge…

Mal so ne Frage: Wenn es bloß einzelne (Cryptomator) Dateien sind, bei welchen der Dateiname zu lang ist, kann ich diesen einfach manuell kürzen bzw. verändern? Oder findet dann Cryptomator die Datei dann nicht mehr und stellt ggf. die Dateien im Tresor nicht mehr korrekt dar? :thinking:

Bsp.:

Eine Datei heißt: nHGjr97A-3Bkj7qNAAx6TQzMf7vCy96xgiMx47nd33L66FG67UG_wl_ivagZL91330aJ_2PK96FSxlq3fw7c910RGel4MS9LlTsMZquZ-r3g4memi6_N-NN1ifEz7LLiS8FMntWTZIOUT9wkvLITe-hMQP_fOiIJgg4xhnSzAbMmpWi6Q

und wird z.B. in folgenden Dateinamen umbenannt: N1ifEz7LLiS8FMntWTZI449

Wird dann die Datei noch gefunden bzw. kann von Cryptomator eingelesen werden?

Nein. Dateien im Speicherort des Tresors sollten tunlichst nicht angefasst werden.

Was du tun kannst, ist den Namen der betreffende Datei innerhalb des Tresors zu kürzen. Die betroffene Datei kannst du zum Beispiel anhand der Zeitstempel finden.

Randnotiz: Mit Version 1.5.0 wird nun auch bei jedem neu erstelltem Tresor extra eine Datei in den Speicherort des Tresors gelegt, die ausdrücklich davor warnt irgendetwas in dem Verzeichnissen zu ändern.

Danke für die ausführlicher Erläuterung infeo!

Ich versuche gerade, meine Dateien verschlüsselt in die Cloud zu übertragen - das ist schon ein wenig. Da es immer wieder zu diesem Problem kommt, habe ich das erstmal abgebrochen. Dabei handelt es sich auch um Dateien, die durch andere Programme erzeugt wurden und die ich nicht umbenennen kann/darf.

Was haltet ihr von folgender Idee: Bei der Erstellung eines Tresors kann eine Zahl eingegeben werden (optional), die die maximale Pfadlänge begrenzt. Cryptomator richtet den Tresor danach aus und bringt den Verkürzungsalgorithmus bei den Dateien zur Anwendung, die diese maximale Pfadlänge nach Verschlüsselung überschreiten werden. D.h. die Pfadlänge der verschlüsselten Dateien bleibt immer unterhalb der “zulässigen” Grenze. Gleichzeitig werden nicht mehr Dateien mit dem aufwendigeren Verfahren behandelt als nötig.

Haben wir auch schon überlegt. Ist nicht unmöglich, aber sollte gut durchdacht sein. Das Problem ist hier die Abwärtskompatibilität. Es müsste ein neues Tresorformat definiert werden, um zu verhindern, dass alte Cryptomator-Versionen derartige Tresore zu öffnen versuchen und dann nicht den konfigurierten Schwellwert, sondern einen eigenen annehmen. Letzteres würde zu Dateninkonsistenzen führen, was unbedingt zu vermeiden ist.

Stellt sich die Frage: Wie bestimmt man die geeignete Limit-Länge? Ich habe das Limit unverändert auf 220 gelassen. Probleme gibt es beispielsweise bei einer Datei, deren Pfadlänge im gemappten Verzeichnis 160 Zeichen beträgt. Die verschlüsselte Datei hingegen hat eine Pfadlänge von 265 Zeichen, worüber sich Hidrive beim Synchronisieren beschwert.

Wenn das Dateisystem, auf welchem der Tresor gespeichert ist, kein Limit hat und erst zu einem späteren Zeitpunkt die Synchronisation erfolgt, ist es in der Tat nicht möglich, ein solches Limit zu erkennen.

Ich habe noch ein wenig weiter mit meinen Dateien probiert. Es gibt viele Einflüsse auf den verschlüsselten Dateinamen. Ein wesentlicher scheint die Art der Zeichen zu sein - vor allem Sonderzeichen. Letztendlich bleibt es für den Anwender schwierig zu erkennen, wann eine Datei das Limit reißen wird.

Ich halte es für den besten Weg, auf das “Ziellimit” zu gehen, also die max. Pfadlänge des verschlüsselten Pfades. Der User muss sich nur während der Anlage des Tresors festlegen, ab dann funktioniert der Algorithmus im Hintergrund. Gleichzeitig minimiert man die Anzahl der Dateien, die mit der Verkürzungslogik behandelt werden - nämlich nur die, die Grenze reißen würden. Und ja, dieses Tresor-Format ist nicht abwärtskompatibel - dessen muss man sich bewusst sein.

Genau, das liegt daran, dass Zeichen mehrere Bytes einnehmen können. Insbesondere bei Emojis können (laut diesem Vortrag) da mal für ein einzelnes Zeichen gut 30 Bytes zusammenkommen.

Der Ciphertext für einen Cleartext mit n Bytes ist (16+n)*4/3+4 Zeichen lang.

Na ja, ich weiß, dass die Maximallänge auf meinem Dateisystem 260 Zeichen ist. Nun produziert cryptomator einen Pfad mit 266 Zeichen, obwohl das Standard-filenameLengthLimit 220 ist. Von den 266 Zeichen ist der von cryptomator generierte Teil 236 Zeichen (also auch > 220). Auf was genau bezieht sich denn das Limit?

Und wieso produziert cryptomator in der neuen Version so lange Pfadnamen? Mit 1.4 hat es prima funktioniert.

Ich habe es schon in einem anderen Thread geschrieben, aber auch hier nochmal:

Man muss zwischen der Pfadlänge und der Dateinamenlänge (evtl. auch Pfadkomponentenlänge) unterscheiden. Wer Lust hat kann für Windows etwas in der Microsoft Doku lesen.

Das Limit bezieht sich auf Dateinamen. Würde es sich auf Pfade beziehen, dann würde es auch “PathLengthLimit” heißen :wink:

Wenn dein Dateisystem nur 260 unterstützt, sollte es bei längeren Pfaden auch eine Fehlermeldung ausgeben, was auch Cryptomator erkennen würde. Aber anscheinend unterstützt eine andere Sache in deinem Aufbau keine 260 Zeichen.

Alles weitere kann man hier lesen: Error during updating vault (Cryptomator 1.5.3)

Interessant, ich bin in Kombination mit HiDrive von dem gleichen Problem betroffen. Ich habe jetzt mal in die settings.json geschaut und bei allen Tresoren ist das filenameLengthLimit auf 220 gesetzt. Außer bei dem, bei dem das Problem auftritt.

"filenameLengthLimit": -1,

Dabei habe ich dort nie manuell etwas geändert. Wie kommt das?

Ich vermute mal, dass dieser Tresor noch mit einer Version erstellt ist, die diesen Paramter noch nicht kannte. Wenn Du den Tresor dann migrierst, müsste dort 220 eingetragen werden. Wie geschrieben: Vermutung.

Gibt es jetzt hierzu schon eine Lösung mittels Update, oder funktioniert das nur mit dem hier angegeben Workaround von Infeo?

Ich hab das Problem auch seit 1.5 mit der Magenta Cloud

Wenn du mit Problem die Dateinamenlängenlimitierung des Magenta-Sync-Clients meinst, dann kann ein Update das nicht lösen. Schließlich unterstützt dein Dateisystem die volle Nameslänge und Cryptomator erkennt nicht, ob du die Magenta-Cloud benutzt. (und es ist sehr unwahrscheinlich, dass es das jemals wird)

Ich habe bezüglich der Problematik auch einen eigenen Artikel geschrieben, siehe [1.5.0+] File name too long.

1 Like