Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 05/01/2017, à 16:34

stylik

rsync – problème avec liste de filtrage

Bonjour,

J'essaie d'utiliser une liste de filtrage avec rsync (config : Ubuntu 12.04).

Premièrement pour sauvegarder le répertoires root.

DO : dossier d'origine (root/)
DA : dossier d'arrivée

# nano rsync/root_filtre

  GNU nano 2.2.6                                     Fichier : rsync/root_filtre                                                                                

+ .bash_aliases
+ .bash_aliases~
+ .bash_history
+ .bash_history~
+ bash_history/
+ .bashrc
+ .bashrc~
+ Buroot/
+ Docuroot/
- .pulse/
- .pulse-cookie
+ root_bash_history
+ root_bash_history~
+ rsync/
+ skel_media/
+ skel_etc/
- .local

Non sans mal.

Par exemple, la cmd suivante fonctionnait

 rsync -rlDin -vv --stats --filter=': rsync/root_filtre' /DO/ DA/ >Docuroot/rsync.log	

Le log commence par :

backup_dir is /DA_backup/
sending incremental file list
[sender] showing file root_bash_history~ because of pattern root_bash_history~ [per-dir root_filtre]
[sender] showing directory bash_history because of pattern bash_history/ [per-dir root_filtre] 
(…)

ce qui signifie que la liste est bien lue.

Puis subitement, non. La même commande affiche le message d'erreur :

invalid modifier sequence at 'b' in filter rule: .bash_aliases 
rsync error: syntax or usage error (code 1) at exclude.c(829) [sender=3.0.9] 

J'ai testé quelques variantes pour trouver une cause réelle et sérieuse … à ce 'b' pointant sur le .bash_aliases

La seule qui ait semblé fonctionner dans un premier temps (retour du prompt, sans erreur, avec un log) est le changement de nom de la liste.

rsync -rlDin -vv --stats --filter=': rsync/route_filtre' /DO/ /DA/ >/Docuroot_rsync.log

Mais l'entête du fichier de log était dénué des messages liminaires évaluant la liste.

J'ai ramené la liste à la racine du root/

rsync -rlDin -vv --stats --filter=': route_filtre' /DO/ /DA/ >/Docuroot_rsync.log

et l'entête de log est revenu.

Tout cela est très mystérieux.

Puis je me suis déconnecté du root pour passer sur le compte utilisateur (d'où j'effectue aussi des sauvegardes pour conserver les permissions d'accès aux fichiers, sinon tout passe en root:root).

Pas mieux.

J'ai simplifié la manip en créant une petite config de test :

$ mkdir Documents/DO
$ mkdir Documents/DA
$ touch Documents/DO/f1
$ touch Documents/DO/f2
$ touch Documents/DO/f3

$ ll Documents/DO >Documents/listeDODA

$ nano !$
                            
nano Documents/listeDODA
+ f1
+ f2
+ f3


$ rsync -rlDin -vv --filter=': ~/Documents/listeDODA' ~/Documents/DO/ ~/Documents/DA >Documents/log     

$ cat Documents/log 
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
.d          ./
>f+++++++++ f1
>f+++++++++ f2
>f+++++++++ f3
                                                         
total: matches=0  hash_hits=0  false_alarms=0 data=0

sent 73 bytes  received 24 bytes  194.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
            
 

                                                               

En modifiant légèrement la liste

$ cat Documents/listeDODA
+ f1
+ f2
- f3

$ ll Documents/DA/
total 32
drwxrwxr-x 2 systm24 systm24 4096 janv.  5 12:50 ./
drwxr-xr-x 4 systm24 systm24 4096 janv.  5 12:37 ../
-rw-rw-r-- 1 systm24 systm24    0 janv.  5 12:50 f1
-rw-rw-r-- 1 systm24 systm24    0 janv.  5 12:50 f2
-rw-rw-r-- 1 systm24 systm24    0 janv.  5 12:50 f3
                            

f3 devrait être exclu.
Donc la liste n'est clairement pas lue.

Auriez-vous quelques commentaires à faire, svp ?

Merci d'avance.


Modération : merci de modifier ton message pour mettre les balises code partout où elles sont nécessaires !

Dernière modification par stylik (Le 05/01/2017, à 19:32)


MSI K9N SLI-2F, MSI R7-260X, Athlon X2, Ubuntu 12.04

Hors ligne

#2 Le 05/01/2017, à 19:28

stylik

Re : rsync – problème avec liste de filtrage

Du nouveau,

En employant /.rsync-filter (tel que dans l'exemple man_rsync) comme nom de liste (située à la racine), la liste est lue.

$ rsync -rlDi -vv --filter=": /.rsync-filter" Documents/DO/ Documents/DA >Documents/log	

$ cat Documents/log 
sending incremental file list 
[sender] showing file f2 because of pattern f2 [per-dir .rsync-filter] 
[sender] hiding file f3 because of pattern f3 [per-dir .rsync-filter] 
[sender] showing file f1 because of pattern f1 [per-dir .rsync-filter] 
delta-transmission disabled for local transfer or --whole-file 
.d          ./ 
>f..T...... f1 
>f..T...... f2 
total: matches=0  hash_hits=0  false_alarms=0 data=0 							

sent 131 bytes  received 53 bytes  368.00 bytes/sec 
total size is 0  speedup is 0.00 
$ 

En déplaçant la liste renommée dans Documents (multiples tests de syntaxe) par contre, ça plante :

$ rsync -rlDi -vv --filter=" Documents/.rsync-filter" Documents/DO/ Documents/DA >Documents/log 
Unknown filter rule: ` Documents/.rsync-filter' 
rsync error: syntax or usage error (code 1) at exclude.c(817) [client=3.0.9
$

Donc, à posteriori, il faudrait respecter deux règles fondamentales dans l'emploi d'une liste avec '--filter' :
- la liste doit être à la racine
- le nom doit être /.rsync-filter

Je suis le premier surpris.

Tout ça me laisse perplexe car cel n'est pas explicité clairement dans le man, et en discordance avec la syntaxe habituelle.
Avec le vrai chemin (un point devant la barre pour indiquer la racine du home) et le vrai nom (pas de point devant le nom de liste) cela devrait donner :

$ rsync -rlDi -vv --filter=": ./rsync-filter" Documents/DO/ Documents/DA >Documents/log

Pas vrai ?


MSI K9N SLI-2F, MSI R7-260X, Athlon X2, Ubuntu 12.04

Hors ligne

#3 Le 06/01/2017, à 02:33

stylik

Re : rsync – problème avec liste de filtrage

Les résultats d'essais sont toujours mitigés et difficilement interprétables.

Dans root, la liste est lue bien qu'elle ne soit pas à la racine.
Mais avec le compte utilisateur il semble impératif que la liste soit à la racine pour être lue, sinon ça plante (bien que la syntaxe de chemin soit la même que celle utilisée avec root ).

Autrement, dans les deux situations  le nom de liste semble importer peu finalement.

Moi aussi je plante.

Un avis, une suggestion  … ?


MSI K9N SLI-2F, MSI R7-260X, Athlon X2, Ubuntu 12.04

Hors ligne