accueil > Gestion des fichiers et répertoires > rsync-exclude

rsync-exclude : Exclure des fichiers/répertoires spécifiques lors de la synchronisation

`rsync` est un outil puissant utilisé pour synchroniser efficacement des fichiers entre des systèmes locaux et distants. En particulier, les options `--exclude` et `--exclude-from` permettent d'exclure des fichiers, répertoires ou éléments correspondant à des motifs spécifiques de la synchronisation. Ce guide se concentre sur la fonctionnalité d'exclusion de `rsync`, qui est très utile pour éviter les transferts de fichiers inutiles et pour sauvegarder ou copier uniquement des données spécifiques.

Aperçu

La fonctionnalité d'exclusion de `rsync` est cruciale dans les scénarios de synchronisation de fichiers complexes. Elle permet d'exclure des fichiers journaux spécifiques, des fichiers temporaires, des métadonnées de systèmes de gestion de versions (.git, .svn), etc., de la synchronisation, réduisant ainsi le temps de transfert, économisant de l'espace sur la destination et évitant la copie de données inutiles.

Caractéristiques principales

Voici les caractéristiques clés offertes par la fonctionnalité d'exclusion de `rsync`.

  • **Exclusion basée sur des motifs** : Permet d'exclure des fichiers ou des chemins en utilisant des motifs de type glob (caractères génériques).
  • **Exclusion basée sur une liste de fichiers** : Permet de gérer les motifs à exclure en les écrivant dans un fichier séparé.
  • **Application flexible des règles** : Permet de définir des règles d'inclusion/exclusion complexes en combinaison avec l'option `--include`.
  • **Optimisation des performances** : Améliore la vitesse de synchronisation en réduisant les transferts de fichiers inutiles.

Options principales

Voici les options clés utilisées dans la commande `rsync` pour exclure des fichiers et des répertoires.

Spécification des règles d'exclusion

Autres options utiles

Commande générée :

Essayez de combiner les commandes.

Description:

`rsync-exclude` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Voici des exemples d'utilisation réelle de l'option d'exclusion de `rsync`.

Exclure des extensions de fichiers spécifiques

rsync -av --exclude='*.log' --exclude='*.tmp' /path/to/source/ /path/to/destination/

Synchronise le répertoire source vers le répertoire de destination en excluant les fichiers `.log` et `.tmp`.

Exclure des répertoires spécifiques

rsync -av --exclude='node_modules/' --exclude='.git/' /path/to/source/ /path/to/destination/

Synchronise le répertoire source vers la destination en excluant les répertoires `node_modules` et `.git`.

Utiliser un fichier de liste d'exclusion

rsync -av --exclude-from=exclude_list.txt /path/to/source/ /path/to/destination/

Exclut de la synchronisation les motifs définis dans le fichier `exclude_list.txt`. **Exemple de contenu de exclude_list.txt :** ``` *.bak /temp_files/ logs/ ```

Inclure uniquement certains fichiers et exclure le reste

rsync -av --include='*.conf' --exclude='*' /path/to/source/ /path/to/destination/

Exclut tous les fichiers par défaut et inclut uniquement les fichiers avec l'extension `.conf` pour la synchronisation. L'ordre de `--include` et `--exclude` est important.

Exclure des fichiers spécifiques lors de la synchronisation vers un serveur distant

rsync -avz --exclude='.DS_Store' --exclude='cache/' /path/to/local/user@remote_host:/path/to/remote/

Synchronise le contenu d'un répertoire local vers un serveur distant en excluant les fichiers `.DS_Store` et le répertoire `cache/`.

Conseils et précautions

Voici des conseils et des précautions pour utiliser efficacement l'option d'exclusion de `rsync` et éviter les problèmes potentiels.

Comprendre les règles de correspondance des motifs

Les motifs d'exclusion fonctionnent selon les règles de filtrage de `rsync`.

  • **Caractères génériques** : `*` correspond à n'importe quelle chaîne de caractères, `?` correspond à un seul caractère. `**` correspond à travers les délimiteurs de répertoire.
  • **Chemins** : Si un motif commence par `/`, il est relatif à la racine du répertoire source. S'il se termine par `/`, il ne correspond qu'à un répertoire.
  • **Chemins relatifs** : Si un motif ne contient pas de `/`, il correspond à tous les niveaux de répertoire. Par exemple, `--exclude='temp'` exclura à la fois `/path/to/source/temp` et `/path/to/source/subdir/temp`.

Importance de l'ordre des options

Les options `--include` et `--exclude` sont traitées dans l'ordre où elles apparaissent dans la ligne de commande. Par conséquent, pour inclure des fichiers spécifiques tout en excluant le reste, vous devez utiliser `--include` en premier, puis `--exclude='*'`.

  • `--include='*.txt' --exclude='*'` (inclut tous les fichiers `.txt`, exclut le reste)
  • `--exclude='*' --include='*.txt'` (exclut tous les fichiers, y compris les fichiers `.txt` - résultat non souhaité)

Utilisation de l'exécution de test (`--dry-run`)

Avant de synchroniser des données importantes, utilisez toujours l'option `-n` ou `--dry-run` pour vérifier le comportement attendu. Ceci est très efficace pour éviter l'exclusion ou l'inclusion involontaire de fichiers.

  • `rsync -avn --exclude='*.log' /path/to/source/ /path/to/destination/`

Option `-vv` pour le débogage

Lorsque les règles d'exclusion ne fonctionnent pas comme prévu, l'ajout de l'option `-vv` (verbose) peut aider au débogage en affichant des informations détaillées sur les fichiers ignorés et les règles qui les ont exclus.

  • `rsync -avv --exclude='*.bak' /path/to/source/ /path/to/destination/`

Commandes de la même catégorie