47 votes

autorisation rsync refusée les répertoires créés n'ont pas d'autorisation

Je suis en train de pousser des modifications à mon serveur via ssh sur windows (cygwin) à l'aide d' rsync. La commande que j'utilise est:

rsync -rvz -e ssh /cygdrive/c/mondossier/ rsyncuser@192.168.1.110:/srv/www/prj112/myfolder/

/srv/www/prj112/myfolder/ est détenue par rsyncuser. Mon problème est que même avec rsync les sous-répertoires sont créer qu'ils publient, chaque répertoire est affecté d'autorisation par défaut de d--------- donc rsync ne parvient pas à copier tous les fichiers à l'intérieur.

Comment puis-je résoudre ce problème?

68voto

namsral Points 1416

L'option permettant d'ignorer les autorisations NTFS a été modifiée dans Cygwin version 1.7. C'est peut-être ce qui cause le problème.

Essayez d'ajouter l'indicateur 'noacl' à vos montures Cygwin dans C: \ cygwin \ etc \ fstab, par exemple:

 none /cygdrive cygdrive user,noacl,posix=0 0 0
 

Vous pouvez passer des autorisations personnalisées via rsync en utilisant l'option 'chmod':

 rsync -rvz --chmod=ugo=rwX -e ssh source destination
 

7voto

Evilripper Points 170

Si vous déployez un site à partir de Windows (par exemple, octopress utilisez rsync), il est possible de définir l’autorisation sur 775 en ajoutant plusieurs commandes chmod:

    rsync -avz --chmod=ug=rwx --chmod=o=rx -e ssh
 

7voto

sra Points 17565

Votre problème vient du fait que les permissions Unix sur ce répertoire sont vraiment 0. Toutes les informations d'accès sont stockés dans différents Acl, qui rsync ne se copie pas. Ainsi, il définit les autorisations sur la copie distante à 0, et, bien évidemment, il est incapable d'écrire dans ce répertoire par la suite. Vous pouvez l'exécuter

chmod -R 775

sur cet annuaire, ce qui devrait résoudre votre rsync problème.

Après un coup d'oeil à la page de manuel je peux dire que le chmod param est disponible dans rsync depuis la version ~2.6.8. Mais vous devez utiliser --chmod=ugo=rwX en combinaison avec d' rsync -av

Vous devriez aussi essayer cette commande:

rsync -av <SOURCE_DIR> rsyncuser@192.168.1.110:/srv/www/prj112/myfolder

Il serait de travailler sur Linux au moins. Et notez que rsync n'a pas besoin de parler de ssh--au moins sur Linux.

Mais si tout échoue et juste pour donner une option, vous pouvez prendre un coup d'oeil à ce emballés et prêts outil de cwRsync

2voto

codingdave Points 106

Pour rsync à partir de Windows à Unix/Linux, vous devez fournir une commande comme

SET BACKUP_SERVER=my.backup.server
SET SSH_USER=theUnixUserName
SET STORAGEPATH=/home/%SSH_USER%/Backup/
SET STORAGEURI=%BACKUP_SERVER%:%STORAGEPATH%    
SET SSH_ID=/cygdrive/c/Users/theWindowsUserName/Documents/keyfiles/id_dsa
SET EXCLUDEFILE=backup_excludes.txt
SET BACKUPLOGFILE=/cygdrive/c/Users/theWindowsUserName/Backuplogs/backup-%DATE%-%TIME::=-%.log

La commande ssh puis est

SET BACKUP=rsync -azvu --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --rsh="ssh -l %SSH_USER% -i '%SSH_ID%'" --exclude-from=%EXCLUDEFILE% --delete --delete-excluded --log-file="%BACKUPLOGFILE%"

avec backup_excludes.txt contenant des lignes de ignoré des éléments comme

.git
.svn
.o
\Debug
\Release

Alors vous pourrez l'utiliser dans un script avec

%BACKUP% /cygdrive/c/mySensibleData %STORAGEURI%
%BACKUP% /cygdrive/c/myOtherSensibleData %STORAGEURI%
%BACKUP% /cygdrive/c/myOtherSensibleData2 %STORAGEURI%

et ainsi de suite. Cette sauvegarde vos répertoires mySensibleData, myOtherSensibleData et myOtherSensibleData2 avec les permissions 755 pour les dossiers et 644 pour les fichiers. Vous obtenez également les journaux de sauvegarde dans votre %BACKUPLOGFILE% pour chaque sauvegarde.

1voto

Mark Points 1

Cygwin rsync signalera l’autorisation refusée lorsqu’un processus a le fichier cible ouvert. Téléchargez et exécutez Process Explorer et découvrez s'il existe d'autres moyens de verrouiller le fichier ou essayez simplement de renommer le fichier et vérifiez si vous obtenez une erreur Windows concernant un autre processus ayant le fichier ouvert.

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