rsync não funciona entre NTFS / FAT e EXT

12

Eu tenho música que toco no meu carro, de um stick USB FAT32. A pasta que eu uso para colocar músicas é armazenada no meu disco rígido EXT4. Eu adiciono / removo / retag músicas regularmente e, ocasionalmente, quero rsync as alterações para o stick USB. Mas por alguma razão desconhecida (talvez permissões?), rsync copia todos os arquivos a cada vez, em vez de apenas os alterados. Estou chamando rsync como:

rsync -vrlptgD source dest

Como posso fazer isso funcionar como eu quero (eu sei quando um arquivo não foi alterado e não copiei)?

    
por wim 14.03.2012 / 11:06

5 respostas

16

A resposta de Javier Rivera funciona, mas demora bastante para o rsync verificar e comparar todas as somas de verificação dos arquivos. Descobri que usar a seguinte opção funcionou melhor para mim:

rsync -rtv --modify-window=1 /source /dest

A opção --modify-window=1 permite uma variação de ± 1s nos timestamps. Com esta opção ativada, a comparação do registro de data e hora será mais branda e examinará as minúsculas diferenças de tempo entre os sistemas de arquivos NTFS / FAT e Unix.

Origem (ger): link

P.S .: Por favor, esteja ciente de que o horário de verão causará transferências completas de arquivos duas vezes por ano. Consulte aqui para obter mais detalhes e possíveis soluções.

    
por Glutanimate 12.09.2012 / 18:31
10

Os carimbos de data / hora no FAT32 são muito diferentes dos do UNIX para depender deles para verificar alterações no arquivo, você deve usar também o parâmetro -c, forçará o rsync a comparar todos os arquivos para detectar alterações em vez de confiar em carimbos de data / hora. Vai funcionar, mas é mais lento.

Finalmente, há algumas opções no seu comando que não podem funcionar com sistemas de arquivos FAT32.

  • -l preservará os links, o FAT32 não tem nenhum conceito de links
  • -p tentará preservar a permissão, novamente sem permissões no FAT32
  • -t tentará preservar os registros de data e hora de modificação, há apenas um registro de data e hora no FAT32
  • -g tentará preservar a propriedade do grupo, mais uma vez sem suporte do FAT32
  • -D tentará preservar arquivos e dispositivos especiais, agora você está aqui.

Como comentários htorque, as opções inválidas não vão te machucar, eles simplesmente não fazem nada. Mas você deve adicionar o interruptor -c.

Isto:

rsync -vrc source dest

deve funcionar (pelo menos funciona no meu computador).

    
por Javier Rivera 14.03.2012 / 11:22
2

Eu estava tendo um problema semelhante no OSX, e a resposta do Glutanamate não ajudou. Alguns dos arquivos diferem por uma hora; isso pode ser porque eu tento cruzar fusos horários com relativa frequência. Outros arquivos estão desativados por um dia ou até um mês. Não sei por que isso acontece. Checksumming em alguns dos arquivos com timestamps muito diferentes mostra que eles são, de fato, idênticos.

Em qualquer caso, parece que a opção --size-only , que informa rsync para ignorar os timestamps, funcionará para os meus propósitos. -c / --checksum (como mencionado por Javier) também funciona, mas demora um pouco mais. Eu calculei o tempo e demorou cerca de um minuto para comparar somas de verificação para o GB ou mais no subdiretório com o qual estou trabalhando. Claro que a velocidade com que isso acontece dependerá da unidade mais lenta do sistema; no meu caso, esse é o cartão SD no meu celular. No entanto, isso foi depois que eu já estava fazendo alguma manipulação de arquivos (incluindo checksum), então muitos dos arquivos podem já ter sido copiados para o cache de RAM.

    
por intuited 06.10.2014 / 17:37
1

Você também deve evitar o uso da popular opção -a. Minha recomendação sobre o FAT32 é

 rsync -vrc --delete --progress --no-p source  destination

- no-p: sem permissão

- delete: apaga arquivos e pastas não correspondentes no destino (se você realmente quer isso)

- progresso: mostra o progresso durante a transferência. É bom para arquivos grandes.

    
por Ahmad Yoosofan 31.07.2014 / 15:04
0

São muitos sinalizadores (-vrlptgD) que você está usando. Lembre-se, o rsync é um utilitário do Linux e não funciona com o Fat32 e NTFS de forma eficaz.

Você teria que procurar por truques para poder usá-lo.

Tente:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

Mais informações aqui

    
por Raman Kathpalia 02.02.2018 / 02:07