Questão rsync não funciona entre NTFS / FAT e EXT


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 / repito músicas regularmente e ocasionalmente quero rsync as alterações no pendrive. Mas por algum motivo desconhecido (talvez permissões?), rsync copia todos os arquivos todas as vezes, em vez de apenas os alterados. eu estou chamando rsync gostar:

rsync -vrlptgD source dest

Como posso fazê-lo funcionar como eu quero (eu sei quando um arquivo não foi alterado e não copie)?


12
2018-03-14 10:06


origem




Respostas:


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

o --modify-window=1 switch permite uma variação de ± 1s nos timestamps. Com esta opção ativada, a comparação de timestamp 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

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


16
2017-09-12 16:31



Isso é ótimo. Eu encontrei também a opção --iconv útil quando vai de fonte linux para dest MacOS - wim
Por alguma razão eu preciso usar modify-window=2 Porque =1 ainda copia todos arquivos. Copiando de NTFS para FAT32. Depois disso, tudo bem. - Luc
Eu adicionei o --size-only sinalizar para pular arquivos que correspondem ao tamanho - alexandre1985
@ alexandre1985: Isso omitirá arquivos que alterem seu conteúdo, mas não o tamanho deles. Você só deve usá-lo quando quiser fazer backup somente de arquivos que sempre mudam de tamanho quando alteram o conteúdo, e. g. porque os dados só são anexados a eles, mas nunca são substituídos. - David Foerster


Carimbos de data / hora em FAT32 são muito diferentes dos unix para depender deles para verificar alterações de arquivo, você deve usar também a opção -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 em 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 timestamps de modificação, há apenas um timestamp no FAT32
  • -g tentará preservar a propriedade do grupo, novamente não suportada pelo FAT32
  • -D tentará preservar arquivos e dispositivos especiais, você agora o que vem aqui.

Como htorque comenta, as opções inválidas não vão te machucar, elas simplesmente não farão nada. Mas você deve adicionar o switch -c.

Este:

rsync -vrc source dest

deve funcionar (pelo menos funciona no meu computador).


10
2018-03-14 10:22





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 o --size-only opção, que informa rsync para ignorar 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.


2
2017-10-06 15:37





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: exclui arquivos e pastas não correspondentes no destino (se você realmente deseja isso)

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


1
2017-07-31 13:04



Tenho um upvote de mim, embora em adicional para -vrcEu também faço -vrcz - Antony


Isso é muitos flags (-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.

Experimentar:

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

Mais informações Aqui


0
2018-02-02 01:07