rsync no Windows - as permissões na pasta remota não estão definidas corretamente

2

Estou tendo um pequeno problema. Eu uso rsync (Cygwin) na janela e os arquivos que estão sincronizados na minha pasta remota não está certo.

rsync -r /cygdrive/c/xampp/htdocs/mysite/* [email protected]:/home/mysite/public_html/

Agora, uso o rsync para fazer o upload dos arquivos, MAS, então, eu entrei no meu diretório remoto e mudei manualmente as permissões de arquivo / pasta.

O rsync tem uma opção para o CHMOD, etc?

Obrigado Wenbert

EDIT: Eu gostaria que os arquivos fossem 644, etc.

    
por wenbert 23.07.2011 / 07:25

2 respostas

4

Se você quiser forçar as permissões no destino, precisará usar a opção --chmod e / ou a opção --perms .

  • --chmod substitui as permissões de origem (ou seja, o rsync finge que as permissões de origem são o que você especificar em vez do que elas realmente são)
  • --perms (ou -p ) força as permissões de origem no servidor de destino

Por exemplo:

rsync --chmod=a=r,u+w,D+x -p -r /cygdrive/c/xampp/htdocs/mysite/* \
    [email protected]:/home/mysite/public_html/

Você não mencionou o que o cygwin considera as permissões de origem (ou seja, um ls -l /cygdrive/c/xampp/htdocs/mysite/* no cygwin) ou quais as permissões reais que estão no lado do destino. Se soubéssemos disso, seria possível construir algo um pouco mais simples.

Para uma iluminação completa das várias opções, consulte a muito detalhada página do manual do rsync .

Observe que o rsync ainda não suporta permissões octal (por exemplo, --chmod=644 ). De acordo com este post , o suporte para isso estará disponível no rsync 3.1.0.

    
por 23.07.2011 / 19:46
5

O Cygwin não entende as ACLs do NTFS e não pode replicá-las. Você sempre terminará com permissões patetas no lado remoto usando o rsync.

Os dois métodos que usei ou ouvi recomendados para contornar o problema são:

  1. Execute periodicamente um script de correção no servidor remoto, usando o cacls.exe ou alguma variante dele para corrigir as ACLs. O engodo dessa técnica é que seu script precisa ser mantido atualizado, caso contrário, as permissões no lado do destino não corresponderão à origem. Isso é difícil de manter.
  2. Siga sua execução do rsync com uma execução do robocopy.exe, mas use apenas o robocopy para replicar as ACLs do NTFS da origem ao destino. Isso requer que você possa se conectar ao servidor de destino usando um compartilhamento SMB ou uma técnica semelhante, o que significa que você está suportando o cygwin / rsync / ssh e também um compartilhamento SMB.
por 02.05.2012 / 19:48