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 ls
in eine Datei einfüge und die Datei dann über einlese vim
. Mit dem fileencoding=latin1
werden die Umlaute korrekt angezeigt.
tar
Diese Magento-Installationen werden nun von und gesichert 7zip
( ccrypt
in 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 set
Wert der Verbindung auf setze ISO8859-15
, in das freigegebene Verzeichnis wechsle und touch
eine 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=utf8
die 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).iocharset
utf8
cp850
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