rsync não funciona entre NTFS / FAT e EXT

13

Eu tenho música que toco no meu carro, a partir de um pen drive USB FAT32. A pasta que eu uso para colocar músicas é armazenada no meu disco rígido EXT4. Eu adiciono / removo / refiz músicas regularmente e, ocasionalmente, quero fazer rsyncas alterações no pen drive. Mas, por algum motivo desconhecido (talvez permissões?), rsyncCopia todos os arquivos todas as vezes, em vez de apenas os alterados. Eu estou chamando rsyncassim:

rsync -vrlptgD source dest

Como posso fazê-lo funcionar como quero (por exemplo, saber quando um arquivo não foi alterado e não copiá-lo)?

wim
fonte

Respostas:

17

A resposta de Javier Rivera funciona, mas leva muito tempo para o rsync verificar e comparar todas as somas de verificação de arquivos. Eu descobri que usar a seguinte opção funcionou melhor para mim:

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

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

Fonte (ger): http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: Esteja ciente de que o horário de verão causará transferências completas de arquivos duas vezes por ano. Veja aqui para mais detalhes e possíveis soluções.

Glutanimado
fonte
Isso é ótimo. Eu também achei a opção --iconvútil quando se passa de linux origem ao destino MacOS
wim
2
Por alguma razão eu preciso usar, modify-window=2porque =1ainda copia todos os arquivos. Copiando do NTFS para o FAT32. Depois disso, está tudo bem.
Luc
Eu adicionei a --size-onlybandeira para ignorar arquivos que correspondem em tamanho
alexandre1985
1
@ alexandre1985: Isso omitirá arquivos que alteram seu conteúdo, mas não seu tamanho. Você deve usá-lo apenas quando desejar fazer backup de arquivos que sempre mudam de tamanho quando alteram o conteúdo, por exemplo, porque os dados são anexados apenas a eles, mas nunca sobrescritos.
David Foerster
11

Os carimbos de data e hora no FAT32 são muito diferentes dos do unix para confiar neles para verificar alterações de arquivos; você também deve usar a opção -c, forçará o rsync a comparar todos os arquivos para detectar alterações em vez de confiar nos carimbos de data e hora. Funcionará, mas é mais lento.

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

  • -l preservará os links, o FAT32 não tem conceito de links
  • -p tentará preservar a permissão, novamente nenhuma permissão no FAT32
  • -t tentará preservar os carimbos de data / hora da modificação, há apenas um carimbo de data / hora no FAT32
  • -g tentará preservar a propriedade do grupo, novamente não suportado pelo FAT32
  • -D tentará preservar arquivos e dispositivos especiais, agora o que vem aqui.

Como comenta htorque, as opções inválidas não o prejudicarão, elas simplesmente não farão nada.

Este:

rsync -vrc source dest

deve funcionar (pelo menos funciona no meu computador).

Javier Rivera
fonte
3

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 costumo atravessar fusos horários com relativa frequência. Outros arquivos ficam desativados por um dia ou até um mês. Não sei por que isso acontece. A soma de verificação em alguns dos arquivos com carimbos de data e hora muito diferentes mostra que eles são, de fato, idênticos.

De qualquer forma, parece que a --size-onlyopção, que diz rsyncpara ignorar os carimbos de data e hora, funcionará para meus propósitos. -c/ --checksum(como mencionado por Javier) também funciona, mas demora um pouco mais. Eu cronometrei 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. Obviamente, a velocidade com que isso acontece dependerá da movimentação mais lenta do sistema; no meu caso, esse é o cartão SD no meu telefone. No entanto, isso foi depois que eu já estava fazendo alguma manipulação de arquivos (incluindo soma de verificação), e muitos dos arquivos já podem ter sido copiados no cache da RAM.

intuído
fonte
1

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

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

--no-p: sem permissão

--delete: exclui arquivos e pastas incomparáveis ​​no destino (se você realmente deseja isso)

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

Ahmad Yoosofan
fonte
1
Tenho um voto positivo de mim, embora, além de -vrc, eu também o faça-vrcz
Antony
0

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

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

Experimentar:

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

Mais informações aqui

Raman Kathpalia
fonte