Problème avec rsync (et accents)

Bonjour,

Après avoir résolu (grâce à votre aide), mon problème d’accès à un dossier avec accent, je vous sollicite de nouveau pour un problème avec rsync lié probablement à mes accents…

Désolé, ça risque d’être long…

Alors pour commencer, petit rappel je suis sous Debian 6 sur un dedibox et j’utilise le terminal Mac OSX 10.7 sous SSH pour m’y connecter

J’ai pour intention de synchroniser mes photos (et mes musiques mais on verra plus tard…) de mon NAS vers mon serveur avec rsync.

Vu que j’ai beaucoup de dossier, j’ai d’abord transféré mes photos en utilisant “Transmit” (logiciel de transfert via ftp ou autre) via FTP

Je me fais ma petite ligne de commande rsync

D’ailleurs je veux bien que vous me disiez ce que vous en pensez, notamment est ce que -u et --ignore-existing ne font pas doublons ?

Donc, lors de la simulation, je remarque que rsync veux m’effacer puis re copier toutes mes photos qui on des accents… (idem sans la variable --delete)

Suite à différents test sur des dossiers/fichiers crées avec accents, sans accents et mêmes tests avec les espaces y compris les fichiers à l’intérieur.

La conclusion de ces tests (de haute volée!!!) sont limpides…

-si fichier avec espaces : rsync ne me les re copies pas
-si fichier avec accents : rsync me les effaces puis me les re copies MAIS seulement si ils ont été transférés par Transmit ! Si je transfère les mêmes fichiers avec accent mais via rsync, il ne me les re copies pas une deuxième fois…

Voilà mon problème… Je ne sais pas si j’ai été clair (j’ai des doutes), j’espère que vous pourrez m’aider sinon je vais devoir renommer tous mes fichiers sans accents…

Désolé aussi pour les fautes

Merci d’avance

Cette commande renvoie notamment cette aide :
[quote]       If you need to transfer a [b]filename that contains  whitespace[/b],  you  can
       either [b]specify the --protect-args (-s) option[/b], or you’ll need to escape
       the whitespace in a way that the remote  shell  will  understand.
[/quote]
donc a priori si tu ajoutes l'option « -s », ça devrait au moins aider pour les espaces… Bon courage. Le man parle peut-être également des accents (caractères spéciaux internationaux), j'ai la flemme :wink:

Cette commande renvoie notamment cette aide :

[quote] If you need to transfer a filename that contains whitespace, you can
either specify the --protect-args (-s) option, or you’ll need to escape
the whitespace in a way that the remote shell will understand.
[/quote]
donc a priori si tu ajoutes l’option « -s », ça devrait au moins aider pour les espaces… Bon courage. Le man parle peut-être également des accents (caractères spéciaux internationaux), j’ai la flemme :wink:

Bonsoir :slightly_smiling:

J’utilise aussi rsync pour mes sauvegardes, et j’ai mis :

un fichier qui récupère les erreurs lors de la sauvegarde :

# pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log : backup=/home/bernard/Documents/Sauvegardes/backuperror.log

puis pour récupérer les messages d’erreurs :

[code]# à noter l’usage des “>” :

Un seul “>” renvoie le contenu du terminal dans le fichier indiqué

en écrasant tout ce que contient déjà ce fichier.

“>>” renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.

Le chiffre “2” suivi d’un seul “>” renvoie seulement les messages d’erreurs

générés par le processus dans le fichier indiqué en écrasant le contenu de ce fichier.

“2>>” renvoie les erreurs sans écraser le contenu du fichier.

[/code]

par exemple pour une de mes sauvegardes, cela donne la ligne suivante :

rsync -av --partial --del --stats /home/bernard /media/bernard/DD2To/Sauvegarde_home_mate 2>> $backup

Si j’ai été peu compréhensible, je mettrai le fichier complet pour être plus compréhensible :wink:

[édit1] pour éviter d’oublier la signification des différents signes, je les mets dans le fichier… :wink:
ce que je viens d’indiquer, est sorti du fichier :slightly_smiling:

[édit 2]
Mettre ces lignes qui concernent le backup, juste avant le fin de ta procédure, afin que le backup puisse “écrire” !

[code]# Vérification des liens = faite

Insertion de la date à la fin de la liste d’erreur si le fichier backuperror

n’est pas vide (c’est à dire s’il y a des erreurs), ce que vérifie l’option “-s” :

if [ -s $backup ]; then
{
date >> $backup
}
fi[/code]

citation de “man rsync” :

[quote] -s, --protect-args
This option sends all filenames and most options to the remote rsync without allowing the remote shell to interpret them. This means that spaces are not split in names,
and any non-wildcard special characters are not translated (such as ~, $, ;, &, etc.). Wildcards are expanded on the remote host by rsync (instead of the shell doing it).

          If you use this option with --iconv, the args related to the remote side will also be translated from the local to  the  remote  character-set.   The  translation  happens
          before wild-cards are expanded.  See also the --files-from option.

[/quote]

Il y a tout dans cette citation. L’option « -s » empêche l’interprétation : les espaces ne sont pas interprétés. Un autre soucis avec les accents est l’encodage : Linux = utf-8 et Windows = iso-machin (tout pourri pas international)… C’est là que l’option --iconv peut aider.

Je pense que c’est là qu’il faut gratter.

Salut,

[quote=“bobo38”]

Un autre soucis avec les accents est l’encodage : Linux = utf-8 et Windows = iso-machin (tout pourri pas international)… C’est là que l’option --iconv peut aider.

Je pense que c’est là qu’il faut gratter.[/quote]

Tout à fait !

seeks.thetys-retz.net/search?q=r … ion=expand

Et si la source du problème était le service FTP qui ne tient pas compte des noms corrects ?
Et si la source du problème était le terminal de MacOS qui fait sa tambouille avec l’encodage ?

Une approche différente.
Il est possible d’avoir ssh client et serveur sur debian et Macos ainsi que mc (midnight commander) sur debian et Macos.
sshfs en debian pour monter le stockage du Mac comme un système de fichiers virtuel local, mc pour opérer des copies comparées à la façon de rsync et vogue la galère…

Pour utiliser MacOS en tant que serveur ssh :

Utilitaires système -> partage -> ssh

Pour installer mc en MacOS : fink, ports …
fink.thetis.ig42.org/index.php?phpLang=fr

[quote]
Le projet Fink a pour but d’ouvrir toutes grandes les portes du monde des logiciels Open Source Unix à Darwin et à Mac OS X. Nous modifions les logiciels Unix pour qu’ils compilent et tournent sur Mac OS X (nous les “portons”) et en faisons une distribution cohérente téléchargeable. Fink utilise des outils de gestion de paquets binaires Debian, tels dpkg et apt-get. Vous avez le choix entre le téléchargement des paquets binaires précompilés ou la construction des paquets à partir des sources
[/quote] Tu pourrais même installer un serveur X et un xterm par ce moyen.
Un serveur X permettrait
$ ssh -X
de debian vers MacOS.
Malheureusement, je n’arrive pas à accéder aux packages de fink pour copier les liens.
un lien extérieur à fink pour mc :

louise.hu/download/applications/ … versal.zip

Merci pour toutes vos réponses !!!

Malheureusement je n’y arrive toujours pas…

Je dois vous avouez que je suis novice et je patauge pas mal.

par exemple, --iconv je sens que c’est de là que peut venir la solution mais je ne sais pas comment le configurer.

Pour le moment, voila ce que j’ai mis (j’ai tenté un truc…):

Bien évidemment ça ne marche pas !!!

@bobo38 : Ca a l’air de marcher pour les espaces, merci
@bobo38 & @BelZéButh : Sur le iconv ça me parait bien mais je ne sais pas comment le paramètrer
@BelZéButh : Je suis en train de lire tes liens, ils sont très intéressant mais pour ne pas te mentir ça me met encore plus dans la panade…
@db871 : alors là désolé, j’ai totalement decroché (je regarderai de plus prés un peu plus tard)
@etxeberrizahar : Je commence effectivement à me demander si ça ne vient pas du Nas (un Synology DS213+)

En tous cas je vous remercies vraiment pour votre aide,
Je pense que mes connaissances (limitées) ont atteintes leurs limites…

Je pense réessayer encore un peu mais après je ne veux pas vous faire perdre votre temps, le problème étant plus compliqué que prévu…

Un fil de gonzes qui galèrent avec l’encodage et rsync entre plusieurs système d’exploitation : forum.ubuntu-fr.org/profile.php?id=135711, Kaoz52, tu n’es pas tout seul…

" --conv=utf-8,utf-8 " ??? Tu convertis de utf-8 à utf-8 ? Il y a de fortes chances que Mac OSX utilise ISO-8859-1 (comme Windows, je peux pas dire je n’utilise pas de Mac), essaie plutôt “–iconv=iso88591,utf8” ou “–iconv=utf8,iso88591”

Un autre lien intéressant :
http://blog.gimpe.com/2009/09/13/tip-use-rsync-to-convert-filenames-utf-8-latin-1iso-8859-1/

:wink:

Voici le fichier complet, cela te sera surement plus explicite, même si cela en concerne qu’une sauvegarde :slightly_smiling:

[code]#!/bin/bash

Ce script permet de faire une sauvegarde incrémentale manuelle avec “rsync”

Il peut être lancé à partir d’un bouton personnalisé dans un tableau de bord.

Variables de couleurs (pour donner un peu de gaieté dans ce monde de brutes…)

VERT="\033[1;32m"
STNDT="\033[0;39m"
ROUGE="\033[1;31m"
ROSE="\033[1;35m"
BLEU="\033[1;34m"
BLANC="\033[0;02m"
BLANCLAIR="\033[1;08m"
JAUNE="\033[1;33m"
CYAN="\033[1;36m"

Date=$(date +%d-%m-%Y)
Heure=$(date +%T)

	echo -e $BLEU "Sûr de vouloir exécuter la sauvegarde ? o/n"
	read ANSWER

if [ $ANSWER == o ] ;
then
echo -e $JAUNE "----\nLancement sauvegarde à : $Heure le $Date"
echo -e $STNDT “-----------\nSynchronisation en cours…\n ------------”

pour donner un nom “raccourci” (incluant le chemin) au fichier backuperror.log :

backup=/home/bernard/Documents/Sauvegardes/backuperror.log

aptitude search ‘~i !~M’ -F ‘%p’ > mes_paquets

à noter l’usage des “>” :

Un seul “>” renvoie le contenu du terminal dans le fichier indiqué

en écrasant tout ce que contient déjà ce fichier.

“>>” renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.

Le chiffre “2” suivi d’un seul “>” renvoie seulement les messages d’erreurs

générés par le processus dans le fichier indiqué en écrasant le contenu de ce fichier.

“2>>” renvoie les erreurs sans écraser le contenu du fichier.

#sauvegarde journalière home, etc, usr
#DD2To
rsync -av --partial --del --stats /home/bernard /media/DD2To/Sauvegarde_home_debian 2>> $backup
rsync -av --partial --del --stats /etc /media/DD2To/Sauvegarde_etc_debian 2>> $backup
rsync -av --partial --del --stats /usr /media/DD2To/Sauvegarde_usr_debian 2>> $backup

#DD1To
rsync -av --partial --del --stats /home/bernard /media/DD1To/Sauvegarde_home_debian 2>> $backup
rsync -av --partial --del --stats /etc /media/DD1To/Sauvegarde_etc_debian 2>> $backup
rsync -av --partial --del --stats /usr /media/DD1To/Sauvegarde_usr_debian 2>> $backup

Vérification des liens = faite

Insertion de la date à la fin de la liste d’erreur si le fichier backuperror

n’est pas vide (c’est à dire s’il y a des erreurs), ce que vérifie l’option “-s” :

if [ -s $backup ]; then
{
date >> $backup
}
fi

	# Mise à jour de l'heure
	Heure=$(date +%T)

echo -e $ROUGE " Sauvegarde terminée à  : $Heure le $Date\n"

else
echo -e $BLEU "Procédure interrompue par l’utilisateur."
fi

read -p “A la prochaine… Pour fermer le terminal : Ctrl + C”

---- fin du script ----[/code]

Pour les connaisseurs rsync, si vous voyez une boulette :wink: merci de me la signaler… que je la “mange” :slightly_smiling:

Bon apres de nombreux essai, j’ai beau retourner le problème dans tous les sens, je n’y arrive pas…

C’est donc officiel, j’abandonne.

A mon avis, il y a un soucis quand j’importe de mon NAS.

Je vous remercie encore pour votre aide et désolé que ça n’est rien donné du coup fait perdre votre temps…

Je vais donc utiliser la solution de facilité et renommer mes fichiers sans accent.

D’ailleurs j’ai un petit souci avec detox, il me place un Underscore après les accents modifié…

ex : Céline devient Ce_line

Merci