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/`