Rsync Problèmes de jeux de caractères

5

J'essaie de sauvegarder une fenêtre Windows sur une machine Linux (Ubuntu 9.10) en utilisant rsync sur la machine Linux, et j'obtiens des erreurs "fichier a disparu" pour les noms de fichiers contenant des caractères inhabituels. Je reçois une erreur similaire ("aucun fichier ou répertoire") si j'utilise "cp" au lieu de rsync. La source dans un partage sur une boîte Windows de langue anglaise.

L'un des personnages est l'apostrophe.

J'ai joué avec diverses options --iconv mais je n'ai pas réussi à résoudre le problème. Suggestions?

Nerdfest
la source
ce n'est probablement pas la véritable apostrophe; c'est probablement un caractère "intelligent" entre guillemets.
Quack Quichotte

Réponses:

7

Vous montez le partage à partir de Windows sur Linux, puis utilisez rsync pour copier les fichiers localement. Comment montez-vous le partage?

Windows devrait stocker les noms de fichiers au format UTF8 ou UTF16, mais vous devez le dire à Linux pour qu'il puisse monter le partage correctement. Utilisez une option de montage telle que utf8/ utf16, ou iocharset=utf8/ iocharset=utf16dans votre commande de montage:

mount -t cifs -o utf16,other,options,here //server/share /path/to/mount/point
              ^^^^^^^^
                   |
                   -- if utf16 doesn't help, try iocharset=utf16
                      utf8 or iocharset=utf8 may also work

D'autres utilisateurs indiquent que UTF16 est plus susceptible d'être correct.

Quack Quack
la source
1
mhh .. affirmer que ntfs stocke les noms de fichiers car utf8 est assez audacieux. le m $ -api fait principalement son travail dans utf16 ( bit.ly/7c8SeR et bit.ly/8hK2rs ) mais la direction générale de votre réponse est correcte :)
akira
vous avez peut-être raison à ce sujet. Tout ce que je peux dire, c’est que je n’ai jamais eu de problème de traduction de nom de fichier que le montage en UTF8 n’a pas résolu, mais je n’utilise pas un jeu extrêmement volumineux de caractères non ASCII.
Quack Quichotte
et je pense: il suffit de remplacer votre utf8 dans votre réponse par utf16 et cela devrait être la solution au problème de la question :)
akira
Je vais essayer les deux quand je rentrerai à la maison et je vous le ferai savoir, merci pour les conseils donnés jusqu'à présent.
Nerdfest
Les options utf8 et utf16 n'ont eu aucun effet. iocharset = utf16 a généré une erreur indiquant "Impossible d'accéder à une bibliothèque partagée nécessaire". iocharset = utf8 semble avoir parfaitement fonctionné. Merci beaucoup pour votre aide!
Nerdfest
0

Une façon de contourner ce problème est - pour les répertoires limités avec des noms de fichiers de caractères spéciaux, zip ou tar le répertoire et rsync avec une exclusion pour ce répertoire (en incluant le fichier zip / tar à la place).

nik
la source