Ich wollte gerade ein Backup von der Quelle unterscheiden, um manuell zu überprüfen, ob die Daten korrekt sind. Einige Zeichen, wie z. B. åäö, werden in den Originaldaten nicht korrekt angezeigt, aber da die Clients (über Samba) sie richtig interpretieren, besteht kein Grund zur Sorge. Die aus der Sicherung wiederhergestellten Daten zeigen die Zeichen korrekt an, was dazu führt, dass diff sie nicht als dieselben Dateien betrachtet (mit Unterschieden, sondern völlig unterschiedlichen Dateien).
md5 Summen, gleiche Datei, aber anderer Name.
# md5sum /original/iStock_000003637083Large-barn*
e37c34968dd145a0e25692e1cb7fbdb1 /original/iStock_000003637083Large-barn p? strand.jpg
# md5sum /frombackup/iStock_000003637083Large-barn*
e37c34968dd145a0e25692e1cb7fbdb1 /frombackup/iStock_000003637083Large-barn på strand.jpg
Mounten Sie Optionen und Dateisysteme
/dev/sdb1 on /original type ext4 (rw,noatime,errors=remount-ro)
/dev/sdc1 on /frombackup type ext4 (rw)
Gebietsschema
LANG=sv_SE.UTF-8
LANGUAGE=
LC_CTYPE="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_PAPER="sv_SE.UTF-8"
LC_NAME="sv_SE.UTF-8"
LC_ADDRESS="sv_SE.UTF-8"
LC_TELEPHONE="sv_SE.UTF-8"
LC_MEASUREMENT="sv_SE.UTF-8"
LC_IDENTIFICATION="sv_SE.UTF-8"
LC_ALL=
od -c
# ls "/original/iStock_000003637083Large-barn p� strand.jpg" | od -c
0000000 / v a r / w w w / m e d i a b a
0000020 n k e n _ i m a g e s / k u n d
0000040 i d 8 0 / _ B a r n / i S t o c
0000060 k _ 0 0 0 0 0 3 6 3 7 0 8 3 L a
0000100 r g e - b a r n p 345 s t r a
0000120 n d . j p g \n
0000127
# ls "/frombackup/iStock_000003637083Large-barn på strand.jpg" | od -c
0000000 / d a t a / v a r / w w w / m e
0000020 d i a b a n k e n _ i m a g e s
0000040 / k u n d i d 8 0 / _ B a r n /
0000060 i S t o c k _ 0 0 0 0 0 3 6 3 7
0000100 0 8 3 L a r g e - b a r n p 303
0000120 245 s t r a n d . j p g \n
0000135
linux
diff
character-encoding
user135361
quelle
quelle
Antworten:
Unix-Dateisysteme sind in der Regel länderunabhängig, da Dateinamen aus Bytes bestehen und es Aufgabe der Anwendung ist, zu entscheiden, was diese Bytes bedeuten, wenn sie außerhalb des ASCII-Bereichs liegen. Die heutige Konvention unter Unix besteht darin, Dateinamen und alles andere in UTF-8 zu codieren, abgesehen von einigen älteren Umgebungen (hauptsächlich asiatische). Windows-Dateisysteme haben normalerweise eine Codierung, die in den Dateisystemeigenschaften angegeben ist.
Wenn Sie mit Dateinamen in einer anderen Codierung arbeiten müssen, erstellen Sie mit convmvfs eine übersetzte Ansicht dieses Dateisystems . Siehe Arbeiten mit Dateinamen in einer anderen Codierung als ssh
Es scheint, dass Ihr ursprüngliches System Dateinamen hat, die in Latin-1 codiert sind. Ihr aktuelles System verwendet UTF-8, und die
å
in Latin-1 (\345
) dargestellte Ein-Byte-Sequenz ist eine ungültige Sequenz in UTF-8, diels
als gedruckt wird?
. Ihr Sicherungsprozess hat irgendwie zu Dateinamen geführt, die in UTF-8 codiert sind. Samba übersetzt Dateinamen basierend auf seiner Konfiguration.Erstellen Sie eine neu codierte Ansicht, um mit Ihrer nativen Codierung auf die Originaldateien zuzugreifen:
(Je nachdem, welche Berechtigungen und Eigentumsrechte Sie erhalten möchten, benötigen Sie möglicherweise andere Optionen.)
quelle
Unter Unix / Linux kann ein Dateiname ein beliebiges Zeichen außer
'\0'
(ASCII NUL) und'/'
(Schrägstrich, Verzeichnistrennzeichen) enthalten. Insbesondere wenn Sie Ihren Dateinamen in Kanji in einer seltsamen Codierung geben möchten, fahren Sie einfach fort. Sie werden wahrscheinlich nur Kauderwelschls(1)
oder andere Befehle sehen, aber nichts Schlimmes wird passieren. Das ist, was Sie sehen, daspå
wird gerendert alsp?
, das'?'
hier ist eine übliche Abkürzung für "unbekanntes / Nicht-ASCII-Zeichen".Versuchen Sie, beide Dateinamen durchzulaufen
od -c
, dh gehen Sie wie folgt vor:(Der Globus soll nicht relevante Namen herausfiltern, nach Geschmack anpassen).
Nur wenn sich die Ausgabe unterscheidet, würde ich mir Sorgen machen. Aber angesichts Ihres Svedish-Setups vermute ich, dass der richtige Name lautet
på
. Vielleicht ist der andere ein Name in Latin-4, der von einem früheren Setup übrig geblieben ist?quelle