rsync “Operação não permitida”

9

Estou tentando fazer um simples rsync em um disco rígido USB, o comando é

rsync -az --modify-window=2 /home /mnt/exthd/tmp/

Estou executando isso como root.

mas recebo muitos erros que parecem estar relacionados a permissões insuficientes:

rsync: chown "/mnt/exthd/tmp/home/someuser" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bashrc" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bashrc" failed: Operation not permitted (1)
rsync: symlink "/mnt/exthd/tmp/home/guest/fred2" -> "fred" failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1042) [sender=3.0.7]

Esta é a versão 3.0.7. Eu tentei usar a opção --super sem efeito. Alguma ideia?

Tim, o Encantador
fonte
Qual é o sistema de arquivos no disco USB?
Caleb
O disco externo está formatado como FAT (32)? Isso não funcionaria, pois o FAT não conhece os atributos de propriedade do arquivo.
Sven
@ Caleb Eu acho que é FAT, mas como eu digo?
Tim the Enchanter
Correr mount | grep /mnt/exthddeve lhe dizer.
Caleb
@Caleb é diz vfat
Tim o Enchanter

Respostas:

14

O sistema de arquivos FAT (que a montagem do Linux chama de vfat) não pode armazenar alguns dos dados de permissão e propriedade armazenados sobre seus arquivos no lado Linux.

Suas opções parecem ser:

  • Formate o disco com ext3 / 4 ou algum outro sistema de arquivos que suporte esses atributos. Acho que até o NTFS faria o trabalho se você estiver compartilhando com o Windows.
  • Armazene essas propriedades extras usando a --fake-superopção para que o rsync grave xattrs no arquivo em vez de usar os atributos do sistema de arquivos
  • Ignore o erro, essas propriedades serão perdidas.
  • Envolva seu conjunto de dados em um arquivo tar e coloque o arquivo tar no sistema FAT. Todos os atributos são mantidos e estarão presentes se você o extrair.
Caleb
fonte
--fake-super também não funciona, embora o erro seja alterado de Operação não permitida (1) para Operação não suportada (95)
Tim the Enchanter
Hum. Você pode usar --no-ownerpara não tentar definir o proprietário para corresponder. (O FAT não possui propriedade do proprietário) e possível --no-permstambém.
Caleb
obrigado pela ajuda, muito bom, ainda não funciona, embora o erro tenha mudado novamente, cada linha de erro agora está rsync: failed to write xattr user.rsync.%statno início.
Tim the Enchanter
3

O Rsync está tentando uma operação (chown e symlink) que o sistema de arquivos não permite ou não pode executar. Suponho que seu HD externo tenha um sistema de arquivos FAT.

Se você deseja fazer um backup adequado, pode usar o tar.

Sgaduuw
fonte
1
Ou um sistema de arquivos decente.
womble
O FAT é mais como um repositório de arquivos, não um sistema de arquivos. :-)
Janne Pikkarainen
Pessoalmente - eu odeio rsync. Eu já vi muitos erros de tipos diferentes ao usá-lo para copiar arquivos e diretórios do meu MAC para um compartilhamento de rede no meu roteador que usa o sistema de arquivos NFS. Também tive que reformatar essa unidade várias vezes porque o rsync criou arquivos que foram bloqueados e não puderam ser excluídos. A razão pela qual continuei tentando usar o rsync vs cp foi que ele suporta filtros de exclusão e é suposto ser mais rápido. No final, eu escrevi um par de classes Java muito simples - Copy.java e CopyJob.java que é um Runnable para suportar multi-threading e adicionado suporte para filtros ... :)
jrobertsz66