Estou recebendo um erro confuso do rsync e as coisas iniciais que estou encontrando nas pesquisas na web (assim como todas as alterações habituais) não estão resolvendo o problema:
rsync: failed to set times on "/foo/bar": Operation not permitted (1)
rsync error: some files could not be transferred (code 23)
at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9]
Parece estar funcionando apesar desse erro, mas seria bom se livrar dele.
rsync
file-transfer
dreeves
fonte
fonte
Respostas:
Se
/foo/bar
estiver no NFS (ou possivelmente em algum sistema de arquivos FUSE), esse pode ser o problema.De qualquer forma, adicionar
-O
/--omit-dir-times
à sua linha de comando evitará a tentativa de definir os tempos de modificação nos diretórios.fonte
-O
não ajuda, obviamente. Isso não costumava acontecer quando minha partição de backup era ext3 em vez de ext4.--no-t
para remover a opção implícita.O problema provavelmente se deve ao fato de o / foo / bar não pertencer ao processo de gravação em um sistema remoto darwin (OS X). Uma solução para o problema é definir o proprietário adequado no site remoto.
Como essa resposta foi votada e, portanto, esperançosamente útil para alguém, estou ampliando-a para torná-la mais clara.
A razão pela qual isso acontece é que o rsync provavelmente está tentando definir um tempo de modificação arbitrário (mtime) ao copiar arquivos.
Para fazer isso, a
utime()
função do sistema de darwin exige que o uid efetivo do processo de gravação seja o mesmo que o uid do arquivo ou o superusuário, consulte a página do opengroup utime . Verifique esta discussão na lista de discussão do rsync como referência.fonte
/remote/path/to/foo/bar
no servidor remoto com este comando:rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ [email protected]:/remote/path/to/foo/bar
e recebi as mesmas mensagens de erro que desapareceram quando fizuser1
o proprietário/remoe/path/to/foo/bar
assim:$ chown -R user1 /remote/path/to/foo/bar
Como @ racl101 comentou uma resposta, esse problema pode estar relacionado ao proprietário da pasta . O comando rsync deve ser feito pelo mesmo usuário que o do proprietário da pasta. Se não for o mesmo, você pode alterá-lo.
fonte
O problema no meu caso foi que o "ponto de montagem do receptor" foi montado incorretamente. Estava no modo somente leitura (por algum motivo extrangeiro). Parecia que o rsync estava copiando os arquivos, mas não estava. Verifiquei meu arquivo fstab e alterei as opções de montagem para o padrão, reinstale o sistema de arquivos e execute o rsync novamente. Tudo bem então.
fonte
Eu tive o mesmo problema. Para mim, a solução é excluir o arquivo remoto e deixar
rsync
criar novamente.fonte
Eu já vi esse problema ao escrever em um sistema de arquivos que não lida com (adequadamente) os tempos - acho que compartilhamentos SMB, FAT ou algo assim.
Qual é o seu sistema de arquivos alvo?
fonte
sudo port install rsync
) e ela quebrará menos. Para verificar isso:rsync --version
: rsync versão 3.0.5 versão do protocolo 30 ... Acrescentar, ACLs, xattrs, iconv, symtimes, file-bandeiras ... (ACLs e xattrs são os mais importantes)Pode ser que você não tenha privilégios para alguns dos arquivos. Em uma conta de administrador, tente "sudo rsync -av" Como alternativa, ative a conta raiz e entre como raiz. Isso deve permitir que você manuseie completamente o sistema e force o seu rsync! ;-) Eu não tenho certeza se os atributos - extendido mencionados acima ajudarão, mas eu os instalei também, apenas por uma boa medida.
fonte
Isso aconteceu comigo em uma partição do tipo
xfs (rw,relatime,seclabel,attr2,inode64,noquota)
, na qual os diretórios pertenciam a outro usuário em um grupo do qual ambos éramos membros. A associação ao grupo já estava estabelecida antes do login e toda a estrutura de diretórios era gravável em grupo. Eu tinha executado manualmentesudo chown -R otheruser.group directory
esudo chmod -R g+rw directory
para confirmar isso.Ainda não tenho idéia do porquê não funcionou originalmente, mas assumi a propriedade com o
sudo chown -R myuser.group directory
conserto. Talvez relacionado ao SELinux?fonte
utime()
funcionar. Você também pode executar como root e fazê-lo. Mas se o UID do arquivo for diferente, eles não permitirão que você altere o horário para nada além de "agora".utime()
.Esse erro também pode aparecer se você executar o processo rsync para arquivos que não foram modificados recentemente na origem ou destino ... porque não é possível definir o horário dos arquivos modificados recentemente.
fonte