J'utilise cette invocation rsync pour sauvegarder mon répertoire personnel:
rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"
La page de manuel de rsync indique que -a implique -g et -o (entre autres commutateurs), ce qui devrait préserver la propriété. Cependant, j'ai remarqué que si un répertoire n'existe pas sous $BACKUP_MNTPOINT/$USER_HOME
, il est créé avec la propriété root: root au lieu du bon. (Cela ne se produit qu'avec les répertoires juste en dessous $BACKUP_MNTPOINT/$USER_HOME
). Pourquoi donc?
$BACKUP_MNTPOINT
est un lecteur monté localement. $BACKUP_MNTPOINT/$USER_HOME
a la propriété et les autorisations appropriées. Ni , $USER_HOME
ni se $BACKUP_MNTPOINT
terminer par une barre oblique.
Les systèmes de fichiers source et cible sont tous deux XFS et l'exécution mkdir $BACKUP_MNTPOINT/$USER_HOME
crée un répertoire avec la propriété attendue.
la source
$BACKUP_MNTPOINT
et avec quelles options est-il monté? Cela se produit-il uniquement pour le$BACKUP_MNTPOINT/$USER_HOME
répertoire parent ( ) ou pour tous les répertoires créés? Faites$BACKUP_MNTPOINT
et$USER_HOME
terminez par un/
?/home
et le lecteur de sauvegarde. Jusqu'à présent, je pense que cela ne s'est produit que pour les répertoires parents. Ni ,$BACKUP_MNTPOINT
ni se$USER_HOME
terminer par une barre oblique. EDIT: Je peux confirmer maintenant que cela n'arrive qu'aux répertoires juste en dessous$BACKUP_MNTPOINT/$USER_HOME
$BACKUP_MNTPOINT/$USER_HOME
les bonnes autorisations mais pas tous les sous-répertoires? Veuillez modifier votre question et ajouter ces détails. Précisez également simkdir $BACKUP_MNTPOINT/$USER_HOME/foo
crée un répertoire appartenant à votre utilisateur si vous le faites manuellement.mkdir $BACKUP_MNTPOINT/$USER_HOME/foo
crée un répertoire appartenant à l'utilisateur.strace
(comme spécifié dans une pseudo réponse).Réponses:
J'ai eu un problème similaire lors de l'utilisation
rsync
pour sauvegarder mon système sur mon serveur. J'ai utilisé:La solution est qu'il n'y a pas vraiment de problème. Je soupçonne que vous avez abandonné le
rsync
processus une fois que vous avez vu qu'il crée des dossiers avec un mauvais ensemble d'autorisations. Le nœud est quersync
ne définit les autorisations d'un dossier parent qu'une fois qu'il a terminé la synchronisation de tous les sous-dossiers et fichiers de celui-ci.la source
Peut-être exécutez rsync via strace / truss et voyez si vous obtenez une erreur de retour du syscall chown (), et aussi pour confirmer que chown () a le bon chemin et UID / GID.
la source