À ce sujet, au cas où certains viendraient de Google, etc., en essayant de comprendre pourquoi rsync
ne copie pas les sous-dossiers cachés, j'ai trouvé une raison supplémentaire pour laquelle cela peut se produire et j'ai pensé que je devrais le partager pour le prochain qui rencontrera le même problème : si vous utilisez l'option -C
(évidemment --exclude
le ferait aussi, mais je pense que celui-ci est un peu plus facile à repérer).
Dans mon cas, j'avais un script qui copiait plusieurs dossiers entre des ordinateurs, y compris un répertoire avec plusieurs projets git et j'ai remarqué que je ne pouvais pas exécuter les commandes git
normales dans les dépôts copiés (oui, normalement on devrait utiliser git clone
mais cela faisait partie d'une sauvegarde plus grande qui incluait d'autres choses). Après avoir examiné le script, j'ai constaté qu'il appelait rsync
avec 7 ou 8 options.
Après avoir cherché sur Google n'a rien donné d'évident, j'ai commencé à passer en revue les commutateurs un par un. Après avoir supprimé l'option -C
, tout fonctionnait correctement. Dans le cas du script, le drapeau -C
semble avoir été ajouté par erreur, probablement parce que sftp
a été utilisé à l'origine et que -C
est une option liée à la compression sous cet outil.
selon le man rsync
, l'option est décrite comme
--cvs-exclude, -C ignorer automatiquement les fichiers de la même manière que CVS le fait
Étant donné que CVS est un ancien système de contrôle de version, et compte tenu de la description de la page de manuel, il est logique qu'il se comporte de cette manière.