GNU/Linux >> Tutoriels Linux >  >> Linux

Rsync, n'inclut que certains types de fichiers à l'exclusion de certains répertoires ?

Je souhaite synchroniser uniquement certains types de fichiers (par exemple, .py ) et je veux exclure des fichiers dans certains répertoires (par exemple venv ).

Voici ce que j'ai essayé :

rsync -avz --include='*/' --exclude='venv/' --include='*.py' --exclude='*' /tmp/src/ /tmp/dest/

Mais ça ne marche pas.

Qu'est-ce que je rate ?

J'ai également suivi la réponse à cette question, mais cela n'a pas aidé.

Réponse acceptée :

venv/ doit être exclu avant */ est inclus :

rsync -avz --exclude='venv/' --include='*/' --include='*.py' --exclude='*' /tmp/src/ /tmp/dest/

La subtilité est que rsync traite les règles dans l'ordre et la première règle correspondante l'emporte. Donc, si --include='*/' est avant --exclude='venv/' , puis le répertoire venv/ est inclus par --include='*/' et la règle d'exclusion n'est jamais consultée.

Pourrions-nous simplifier cela ?

Pourquoi avons-nous besoin de --include='*/' et --exclude='*' ? Pourquoi --exclude=venv/ --include='*.py' n'est-il pas suffisant ?

La valeur par défaut est d'inclure les fichiers/répertoires. Alors, considérez :

rsync -avz --exclude='venv/' --include='*.py' source target

Cela inclurait tout sauf les fichiers ou répertoires sous venv/ . Cependant, vous ne voulez que .py des dossiers. Cela signifie que nous devons explicitement exclure d'autres fichiers avec --exclude='*' .

--exclude='*' exclut les deux fichiers et répertoires. Donc, si nous spécifions --exclude='*' , alors tous les répertoires seraient exclus et seul le .py le fichier le répertoire racine serait trouvé. .py les fichiers dans les sous-répertoires ne seraient jamais trouvés car rsync ne regarde pas dans les répertoires qui sont exclus. Ainsi, si nous avons --exclude='*' , nous devons le faire précéder de --include='*/' pour s'assurer que le contenu de tous les répertoires est exploré.


Linux
  1. Comment tar (compresser) des fichiers, en excluant certains fichiers ou répertoires

  2. Comparer les répertoires mais pas le contenu des fichiers ?

  3. Statistiques récursives sur les types de fichiers dans le répertoire ?

  4. Journaliser uniquement les fichiers transférés avec Rsync ?

  5. Supprimer uniquement les fichiers dans le répertoire sous linux PAS les répertoires

Comment utiliser rsync pour exclure des fichiers et des répertoires dans le transfert de données

Comment exclure des fichiers et des répertoires avec Rsync

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Synchronisation des fichiers et répertoires Linux avec rsync

Diff -r uniquement pour certains types de fichiers ?

Rechercher des fichiers et imprimer uniquement leurs répertoires parents