Eu tenho um serviço rsync que sincroniza arquivos da máquina remota para uma máquina que os solta em uma unidade de rede.
Eu preciso dos arquivos copiados para assumir as permissões nativas da pasta de destino.
O processo de sincronização funciona bem, mas depois de concluído, não consigo acessar algumas das pastas - permissão negada.
Estou logado como administrador de domínio; também não permitirá que eu modifique nenhuma permissão nas pastas mencionadas. O que da?
comando de execução:
rsync.exe -v -rlt -z --delete "src_path" "dst_path"
windows
permissions
rsync
avguchenko
fonte
fonte
Respostas:
(de http://www.samba.org/ftp/rsync/rsync.html )
Em resumo: para dar aos arquivos de destino (antigos e novos) as permissões de origem, use
--perms
.Para conceder aos novos arquivos as permissões padrão de destino (mantendo inalterados os arquivos existentes), verifique se a
--perms
opção está desativada e use--chmod=ugo=rwX
(o que garante que todos os bits não mascarados sejam ativados).Se você quiser facilitar a digitação desse último comportamento, defina um alias popt para ele, como colocar essa linha no arquivo ~ / .popt (o seguinte define a opção -Z e inclui --no- g para usar o grupo padrão do diretório de destino):
fonte
A segurança "posix" do Cygwin me causou muitos problemas com as permissões de arquivo do Windows NTFS - mesmo usando
--no-perms
com o rsync.Descobri que os arquivos / pastas recém-criados não herdam corretamente as permissões padrão, mas cada arquivo / pasta termina com muitas
<not inherited>
entradas na guia Segurança avançada de arquivos / pastas do Windows. (E esse problema não é apenas relacionado ao rsync).Eu encontrei este post relacionado e este link, ambos muito úteis em como resolver esses problemas usando a
noacl
opção no cygwin's/etc/fstab
arquivo . A desvantagem desta solução é que o cygwin perde a capacidade de definir permissões de arquivo / pasta, mas em muitos casos isso não é importante.(Pesquisando neste tópico no Google, provavelmente você encontrará referências para definir a variável de ambiente CYGWIN = NONTSEC, mas isso é para o cygwin v1.5 e não funciona no cygwin v1.7 em diante.)
fonte
No Windows com DeltaCopy, eu poderia fazê-lo funcionar com:
Funcionou mesmo com
--recursive
fonte
rsync, pelo menos no Cygwin tem a seguinte opção:
-A, --acls preserva ACLs (implica --perms)
Minha versão do Cygwin é:
CYGWIN_NT-6.3 1.7.29 (0.272 / 5/3) 07-04-2014 13:46 x86_64 Cygwin
Espero que isto ajude!
fonte
A resposta mais votada só funciona se você estiver usando o rsync over ssh no Windows. Se você estiver usando o daemon cygwin rsync, apenas usar noacl no / etc / fstab não ajuda, por qualquer motivo, não honra a herança, mesmo se você se livrar do usuário e tentar noacl, substituir, etc. Isso parece acontecer se você estiver sincronizando novamente em uma unidade de nível superior e use path = / cygdrive / o que quer que seja em /etc/rsyncd.conf. Em vez disso, você precisa criar um ponto de montagem separado no / etc / fstab e usá-lo no seu rsyncd.conf:
em /etc/rsyncd.conf, você teria algo como isto:
Então eu tive que reiniciar o sistema Windows, apenas reiniciar o serviço rsync por si só não parecia ajudar, ele continuava lançando erros chroot e chdir (mesmo que / d_drive tenha sido montado e use chroot = false e eu possa escrever nele). Então, quando você sincronizar novamente no sistema Windows, use:
fonte
No passado, acabei de atribuir novamente as permissões no Windows ao meu usuário atual, usando
takeown
em um prompt de comando elevado como:takeown /f <NameOfFolder> /r /d Y
Obviamente, se você usou os
rsync
sinalizadores corretos em primeiro lugar, isso é desnecessário, mas se você não deseja executar novamente osrsync
arquivos que você já copiou, eu recomendaria isso.fonte
correct rsync flags
> e quais seriam esses?Eu tive esse problema com
rsnapshot
, que usa o rsync para backup. I overrided que a remoção--relative
dersync_long_args
. Depois que a pastac
para o próprio disco com permissões estranhas não cria.fonte