J'étais sur le point de différencier une sauvegarde de sa source pour vérifier manuellement que les données sont correctes. Certains caractères, comme åäö, n'apparaissent pas correctement sur les données d'origine, mais comme les clients (via samba) l'interprètent correctement, il n'y a rien à craindre. Les données restaurées à partir de la sauvegarde affichent correctement les caractères, ce qui conduit les diff à ne pas les considérer comme les mêmes fichiers (avec les fichiers diff, mais plutôt complètement différents).
sommes md5, même fichier mais nom différent.
# 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
Options de montage et systèmes de fichiers
/dev/sdb1 on /original type ext4 (rw,noatime,errors=remount-ro)
/dev/sdc1 on /frombackup type ext4 (rw)
Lieu
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
la source
la source
Réponses:
Les systèmes de fichiers Unix ont tendance à être indépendants des paramètres régionaux dans le sens où les noms de fichiers se composent d'octets et c'est à l'application de décider ce que ces octets signifient s'ils tombent en dehors de la plage ASCII. La convention sur Unix aujourd'hui consiste à coder les noms de fichiers et tout le reste en UTF-8, à l'exception de certains environnements hérités (principalement asiatiques). Les systèmes de fichiers Windows, en revanche, ont tendance à avoir un codage spécifié dans les propriétés du système de fichiers.
Si vous devez travailler avec des noms de fichiers dans un encodage différent, créez une vue traduite de ce système de fichiers avec convmvfs . Voir travailler avec des noms de fichiers dans un encodage différent sur ssh
Il semble que votre système d'origine ait des noms de fichiers encodés en latin-1. Votre système actuel utilise UTF-8, et la séquence d'un octet représentant
å
en latin-1 (\345
) est une séquence non valide en UTF-8 quils
s'imprime comme?
. Votre processus de sauvegarde a en quelque sorte abouti à des noms de fichiers encodés en UTF-8. Samba traduit les noms de fichiers en fonction de sa configuration.Pour accéder aux fichiers originaux avec votre encodage natif, faites une vue recodée:
(Vous devrez peut-être d'autres options selon les autorisations et la propriété que vous souhaitez obtenir.)
la source
Sous Unix / Linux, un nom de fichier peut contenir n'importe quel caractère sauf
'\0'
(ASCII NUL) et'/'
(barre oblique, séparateur de répertoire). En particulier, si vous souhaitez donner à vos fichiers des noms en kanji dans un codage étrange, allez-y. Vous ne verrez probablement que du charabials(1)
ou d'autres commandes, mais rien de mauvais ne se produira. C'est ce que vous voyez, lepå
rendu est le suivantp?
,'?'
voici un raccourci commun pour "caractère inconnu / non ASCII".Essayez d'exécuter les deux noms de fichiers
od -c
, c'est-à-dire de faire quelque chose comme:(le glob est de filtrer les noms non pertinents, d'ajuster au goût).
Ce n'est que si la sortie diffère que je commencerai à m'inquiéter. Mais étant donné votre configuration Svedish, je soupçonne que le nom correct est
på
. Peut-être que l'autre est un nom en latin-4 restant d'une configuration précédente?la source