100 votes

Rsync ne synchronise pas le fichier .htaccess

Je tente de synchroniser le répertoire A du serveur1 avec le répertoire B du serveur2.

Assis dans le répertoire A du serveur1, j'ai exécuté les commandes suivantes.

rsync -av * server2::sharename/B

mais la chose intéressante est que cela synchronise tous les fichiers et répertoires sauf .htaccess ou tout fichier caché dans le répertoire A. Les fichiers cachés dans les sous-répertoires sont synchronisés.

J'ai également essayé la commande suivante:

rsync -av --include=".htaccess" * server2::sharename/B

mais les résultats sont les mêmes.

Des idées sur pourquoi les fichiers cachés du répertoire A ne sont pas synchronisés et comment y remédier. Je suis connecté en tant qu'utilisateur root.

merci

0voto

zpangwin Points 66

À 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X