Rsync sobre sshfs ignora nomes de arquivos que começam com sublinhado

4

Estou tentando sincronizar uma árvore de diretórios do OS X (10.11) para o Ubuntu 14.04. Enquanto a maioria dos arquivos é transferida muito bem, arquivos com nomes começando com _ (sublinhado) não.

Aqui está o comando que eu uso:

rsync -rtvh --progress ~/Pictures/processed/ ~/mnt/processed/

E um exemplo da saída:

sending incremental file list
_MG_7425.jpg
      4.66M 100%  169.79MB/s    0:00:00 (xfr#1, to-chk=58/60)
_MG_7427.jpg
      6.59M 100%  103.07MB/s    0:00:00 (xfr#2, to-chk=57/60)
...
rsync: mkstemp "/Users/user/mnt/processed/._MG_7425.jpg.0cAYb3" failed: No such file or directory (2)
rsync: mkstemp "/Users/user/mnt/processed/._MG_7427.jpg.5Gw1vD" failed: No such file or directory (2)

sent 306.24M bytes  received 9.46K bytes  122.50M bytes/sec
total size is 306.17M  speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1249) [sender=3.1.2]

Meu rsync é instalado a partir do homebrew, informações sobre a versão:

rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags

A localização remota é montada usando sshfs :

sshfs -o idmap=user username@hostname:/some/path ~/mnt -o auto_cache,reconnect,defer_permissions,noappledouble

Copiar um dos arquivos ignorados usando o comando cp é bem-sucedido. Eu tentei adicionar as opções --iconv=utf-8-mac,utf-8 e --include '_*' que não tiveram efeito.

O que estou fazendo de errado?

    
por Nic Nilov 04.01.2017 / 17:46

1 resposta

3

Acontece que o culpado estava nos sshfs flags. A flag noappledouble que eu estava usando para me livrar dos arquivos .DS_Store estava realmente interferindo no trabalho de rsync .

Dos documentos do Mount Options do sshfs:

noappledouble

This option makes osxfuse deny all types of access to Apple Double (._) files and .DS_Store files. Any existing files will become apparently non-existent. New files that match the criteria will be disallowed from being created.

Como aponta, a opção também está relacionada ao prefixo do nome ._ , que é exatamente o que rsync usou para os arquivos temporários:

rsync: mkstemp "/Users/user/mnt/processed/._MG_7425.jpg.0cAYb3" failed: No such file or directory (2)

Assim, quando mkstemp estava criando o arquivo temporário, sshfs interferiu e bloqueou sua criação.

A remoção da opção noappledouble do comando sshfs mounting corrigiu o problema e os arquivos _* foram transferidos corretamente.

Obrigado ao @Halfgaar por me apontar na direção certa.

    
por 04.01.2017 / 20:52