Die Dateinamenkodierung wurde von Tar beim Entpacken in eine Windows-Freigabe auf UTF-8 umgestellt.

Die Dateinamenkodierung wurde von Tar beim Entpacken in eine Windows-Freigabe auf UTF-8 umgestellt.

Wir haben verschiedene Magento-Installationen (Webshop), die das freie Hinzufügen von Bildern zu einem Produkt ermöglichen. Wenn einem Produkt ein Bild hinzugefügt wird, wird die Datei auf eine bestimmte Weise benannt, die manchmal Sonderzeichen enthält (z. B. deutsche Umlaute).

In dem einen Fall, den ich gerade untersuche, sind die Dateinamen in Latin1 kodiert. Ich kann das sehen, indem ich lsin eine Datei einfüge und die Datei dann über einlese vim. Mit dem fileencoding=latin1werden die Umlaute korrekt angezeigt.

tarDiese Magento-Installationen werden nun von und gesichert 7zip( ccryptin dieser Reihenfolge). Das Entpacken unter Linux ergibt dieselben Dateinamen in derselben Kodierung.

Wir haben nun eine Freigabe auf einem Windows-System, auf dem wir die entpackte Magento-Installation ablegen möchten. Beim Entpacken tauchen jedoch eine Reihe von Fehlermeldungen bezüglich der Umlaut-Dateinamen auf:

tar: var/magento_webs/customer/media/import/images/12063-sportsto\337d\344mpfer-hinten.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/15240-kunststoffkotfl\374gel-detail-vorne.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/14300-fl\374gel.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/15240-41kotfl\374gel-kunststoff-vorne.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/citr\366n.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/2cv6-ma\337e-1.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/2cv6-ma\337e.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/11076-vorschalld\344mpfer.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden

(Es lässt sich grob übersetzen mit Cannot execute open: File or directory not found)

Wenn ich mir nun die Dateinamen-Tar-Listen anschaue, kann ich sehen, dass Tar anscheinend versucht, UTF-8-kodierte Dateinamen zu erstellen (\337 sieht so aus). Der Einhängepunkt wurde jedoch über (von etc/fstab) verfügbar gemacht:

//192.168.0.111/share   /mnt/share      cifs    username=myusername,noperm,sec=ntlm,codepage=cp850       0       0

Ich bin mir nicht sicher, warum diese Dateinamen nicht so in die Freigabe geschrieben werden können, dass die Umlautkodierung erhalten bleibt. Übersehe ich eine andere Option (ist Codepage hierfür die falsche Option)?

Bearbeitung 1: Ich kann etwas Ähnliches nachbilden, indem ich mich per SSH in die Linux-Box einlogge, den Remote character setWert der Verbindung auf setze ISO8859-15, in das freigegebene Verzeichnis wechsle und toucheine Datei mit einem Umlaut einlogge:

touch: kann â\244â nicht berÃŒhren: Datei oder Verzeichnis nicht gefunden

(X kann nicht berührt werden: Datei oder Verzeichnis nicht gefunden)

Edit 2: Erster Lösungsversuch

Ich habe iocharset=utf8die Mount-Optionen erweitert, die Freigabe erneut gemountet, aber ich habe genau dieselben Probleme mit denselben Dateien. Seltsamerweise wird die Option bei Verwendung von mount(das normalerweise alle Optionen ausgibt, mit denen Mount-Punkte gemountet wurden) nicht ausgegeben (weder mit noch mit als Einstellung).iocharsetutf8cp850

Antwort1

Vor einiger Zeit (ich glaube, ungefähr zwischen Version 2.0) hat mount.cifs die Option „codepage=“ verloren und alles in die Option „iocharset=“ gepackt.

Du solltest damit klarkommen

//host/share /mnt/share cifs username=blah,noperm,sec=ntlm,iocharset=utf8 0 0

verwandte Informationen