Erro rsync: falha ao definir horários em “/ foo / bar”: operação não permitida


194

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.


não, apenas um diretório normal, tanto quanto eu posso dizer.
— 21411 dreeves

Acabei de encontrar um problema semelhante, embora meu código de erro fosse 22: rsync: falha ao definir horários em ... Argumento inválido (22). Após algumas verificações, meus arquivos foram datados da última vez em 1956! Solução: toque em todos os arquivos, problema resolvido. :) "find. -print0 | xargs -0 touch"
— KIAaze em 10/08/12

Acho que se você também configurou um trabalho cron para o mesmo destino, esse erro será exibido. Alterar o horário do trabalho cron (crontab) ajudará a contorná-lo. No meu caso, só recebo esse erro se fizer um rysnc manual se também tiver configurado um trabalho cron.
— NelsonGon

Respostas:


286

Se /foo/barestiver 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.


8
O engraçado é que estou sincronizando ext3 para ext3, ambos os sistemas operacionais são linux. Eu nunca tive que usar essa opção antes. -O fiz o truque, mas gostaria de não ter que usá-lo.
— d -_- b

3
Obrigado! Acontece que alguns hosts VPS (por exemplo, xlshosting.nl) usam isso internamente, o que pode causar problemas com o rsync.
— Frederik

2
Eu tenho o mesmo problema ao sincronizar do Linux ext4 para o Linux ext4: a "não pode definir horários: operação não permitida" para links simbólicos , não diretórios. -Onão ajuda, obviamente. Isso não costumava acontecer quando minha partição de backup era ext3 em vez de ext4.
— Marius Gedminas

10
Eu estava usando o rsync -avc e adicionar -O não estava ajudando. Eu então li que -a era o equivalente a -rlptgoD que inclui -t, que eu acho que está substituindo -O. Então, para mim, a correção foi usar -rlpgoDvc
— dlink 21/09/16

3
@dlink você pode adicionar --no-tpara remover a opção implícita.
— Noam Nelke

86

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.


10
O mesmo no Linux (Debian Squeeze no meu caso) ... Se eu não sou o proprietário do diretório de destino, o rsync fornecerá a mensagem de erro "falha ao definir horários". (Ter permissão de escrita no diretório não é suficiente.)
— ddekany

1
Eu fiquei preso no mesmo problema. Até montar o NTFS com uid = user.
— precisa saber é o seguinte

3
Esse erro foi resolvido quando eu mudei o proprietário do diretório que estava tentando afetar (no servidor remoto) usando o comando rsync para o mesmo usuário que tentava efetuar login via rsync no script Bash local. Em outras palavras: eu estava tentando gravar /remote/path/to/foo/barno servidor remoto com este comando: rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ user1@1.2.3.4:/remote/path/to/foo/bar e recebi as mesmas mensagens de erro que desapareceram quando fiz user1o proprietário /remoe/path/to/foo/barassim:$ chown -R user1 /remote/path/to/foo/bar
— racl101

1
Se você compartilha seus arquivos com outros usuários em um grupo, por exemplo, você usa o bit fixo, então mudar de proprietário não é realmente a solução. Não usamos -t e adicionamos -O para evitar esse aviso.
— precisa

1
Você pode expandir a resposta para esclarecer se um usuário faz parte de um grupo que possui o arquivo / dir, se isso OR ou não funcionar?
— Elijah Lynn

4

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.

chown -R userCorrect /remote/path/to/foo/bar

2

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.


2

Eu tive o mesmo problema. Para mim, a solução é excluir o arquivo remoto e deixar rsynccriar novamente.


0

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?


Eu estou em um mac, rsync'ing para linux (uma máquina slicehost).
— 21420 dreeves

Ah, estranho ... Já que você está usando o rsync no mac, devo avisá-lo: ele não preserva adequadamente todos os atributos de arquivo do OS X, para que coisas ruins possam acontecer. Veja, por exemplo: blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful
— David Wolever 21/03/2009

Você pode, no entanto, usar a versão mais recente do MacPorts ( 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)
— David Wolever

1
De fato, o rsync no Macintosh define todos os atributos de arquivo e já o faz há algum tempo. Observe que a referência de URL "Bad Things poderia acontecer" é de 2006!
— 9788 #

2
As respostas realmente não devem incluir perguntas. Isso seria mais apropriado como um comentário.
— 18713 Brian

0

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.


0

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 manualmente sudo chown -R otheruser.group directorye sudo chmod -R g+rw directorypara 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 directoryconserto. Talvez relacionado ao SELinux?


A página do manual indica o UID do aplicativo. deve corresponder ao UID do arquivo para 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".
— Alexis Wilke

Você pode criar um link para uma página de manual? Nenhuma das minhas menções utime().
— Sam Brightman

1
linux.die.net/man/2/utime O parágrafo pertinente: "A alteração de carimbos de data e hora é permitida quando: o processo possui privilégios apropriados ou o ID do usuário efetivo é igual ao ID do usuário do arquivo, ou as horas são NULL e o processo tem permissão de gravação para o arquivo ".
— Alexis Wilke

0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.