J'essaye de rsync le répertoire A de server1 avec le répertoire B de server2.
Assis dans le répertoire A de server1, j'ai exécuté les commandes suivantes.
rsync -av * server2::sharename/B
mais ce qui est intéressant, c’est que tous les fichiers et répertoires sont synchronisés, à l’exception de .htaccess ou de tout fichier caché du répertoire A. Tous les fichiers cachés des sous-répertoires sont synchronisés.
J'ai aussi essayé la commande suivante:
rsync -av --include=".htaccess" * server2::sharename/B
mais les résultats sont les mêmes.
Toutes les idées sur la raison pour laquelle les fichiers cachés d’un répertoire ne sont pas synchronisés et comment le corriger. Je cours en tant qu'utilisateur root.
merci
Cela est dû au fait que *
est étendu par défaut à tous les fichiers du répertoire de travail actuel, à l’exception des fichiers dont le nom commence par un point. Ainsi, rsync
ne reçoit jamais ces fichiers en tant qu'arguments.
Tu peux passer .
indiquant le répertoire de travail actuel sur rsync
:
rsync -av . server2::sharename/B
De cette façon, rsync
recherchera les fichiers à transférer dans le répertoire de travail actuel au lieu de les rechercher dans quoi *
s'étend à.
Vous pouvez également utiliser la commande suivante pour créer *
élargir à tous les fichiers, y compris ceux qui commencent par un point:
shopt -s dotglob
Voir aussi page de manuel shopt .
Pour ceux qui essaient juste de synchroniser les répertoires entre les serveurs (y compris tous les fichiers cachés) - par exemple, la synchronisation de somedirA
sur source-server
à somedirB
sur un serveur de destination - essayez ceci:
rsync -avz -e ssh --progress user@source-server:/somedirA/ somedirB/
Notez les barres obliques à la fin des deux chemins. Toute autre syntaxe peut conduire à des résultats inattendus!
En outre, pour moi, il est plus facile d’exécuter des commandes rsync
à partir du serveur de destination, car il est plus facile de s’assurer que j’ai le bon accès en écriture (c’est-à-dire que je pourrais avoir besoin d’ajouter Sudo
à la commande. au dessus de).
Cela va sans dire, mais votre utilisateur distant a évidemment également besoin d'un accès en lecture à somedirA
sur votre serveur source. :)
J'ai eu le même problème.
Pour moi quand j'ai fait la commande suivante les fichiers cachés ont pas se rsyncisé
rsync -av /home/user1 server02:/home/user1
Mais lorsque j'ai ajouté les barres obliques à la fin des chemins, les fichiers cachés ont été synchronisés.
rsync -av /home/user1/ server02:/home/user1/
Notez les barres obliques à la fin des chemins, Brian Lacy ayant déclaré que les barres obliques étaient la clé. Je n'ai pas la réputation de commenter son message, sinon je l'aurais fait.
Je pense que le problème est dû à l'expansion des caractères génériques Shell. Utilisation . au lieu de star.
Considérez l'exemple de contenu de répertoire suivant
$ ls -a .
. .. .htaccess a.html z.js
L’extension générique du shell traduit la liste d’arguments que le programme rsync obtient de
-av * server2::sharename/B
dans
-av a.html z.js server2::sharename/B
avant que la commande ne commence à être exécutée.
Le *
Indique à rsync de ne pas synchroniser les fichiers cachés. Vous ne devriez pas l'omettre.