web-dev-qa-db-fra.com

rsync --include-de ne pas travailler

Les pages de manuel n'ont pas d'exemples pour cela. J'ai du mal à dire à rsync de n'inclure que certains fichiers contenant ces fichiers. Je ne comprends pas pourquoi vous devez exclure pour inclure, pourquoi la rsync ne comprend tout simplement pas ce qui se trouve jamais dans le fichier d'inclusion et que tout le reste sera exclu.

Ceci est mon script:

rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.

et c’est mon fichier d’inclusion qui ne fonctionne pas: il copie trop: il copie tout dans le répertoire/usr2/subdir (y compris le répertoire subdir, bizarre) que je ne souhaite pas. Je veux copier uniquement les fichiers per, 42f et xml dans le répertoire data/text_forms.

+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

et ce qui suit ne fonctionne pas, il ne copie rien:

- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

et ce qui suit ne fonctionne pas non plus, il ne copie rien:

- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

et ce qui suit ne fonctionne pas non plus, il ne copie rien:

- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

Ce qui suit ne fonctionne pas non plus:

+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

Ni les œuvres suivantes:

+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *
3
Guasqueño

J'ai trouvé la solution. J'ai pris deux jours complets pour le trouver. J'espère que cela vous aidera à ne pas perdre autant de temps.

Le premier problème était que le sous-répertoire subdir dans /usr2/subdir était inclus et que je ne voulais pas que tout ce répertoire soit inclus, je voulais simplement que ce soit le répertoire de base; la fin comme dans /usr2/subdir/, ainsi ma nouvelle commande ressemble à:

rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.

Notez que j'ai ajouté une option supplémentaire v dans la ligne de commande (-ruvv) pour obtenir plus de détails sur ce qui était exclu ou inclus au moment de l'exécution de la commande. Avec le répertoire de base corrigé et le supplément v, il était un peu plus facile de créer le bon fichier include:

+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *

Toutes les lignes + doivent être placées avant le - *, spécialement pour les répertoires, car je devais inclure explicitement chaque répertoire à analyser, même si je ne voulais pas que les fichiers se trouvent directement dans ces répertoires. J'ai fait un test en ajoutant un data/anyTestFile1 et un data/text_forms/anyTestFile2 parce que je ne savais pas si ceux-ci allaient être récupérés, mais ils ne l'ont pas été, alors c'est ce que je veux ... enfin.

12
Guasqueño