web-dev-qa-db-fra.com

rsync ne fonctionne pas entre NTFS / FAT et EXT

J'ai de la musique que je joue dans ma voiture, à partir d'une clé USB FAT32. Le dossier sur lequel je mets des chansons est stocké sur mon disque dur EXT4. J'ajoute/retire/retache des morceaux régulièrement et je veux occasionnellement rsync les modifications apportées à la clé USB. Mais pour une raison inconnue (peut-être des autorisations?), rsync copie tous les fichiers à chaque fois plutôt que simplement ceux qui ont été modifiés. J'appelle rsync comme:

rsync -vrlptgD source dest

Comment puis-je le faire fonctionner comme je le souhaite (je sais quand un fichier n'a pas été modifié et ne le copie pas)?

13
wim

La réponse de Javier Rivera fonctionne, mais il faut beaucoup de temps à rsync pour vérifier et comparer toutes les sommes de contrôle de fichiers. J'ai constaté que l'utilisation de l'option suivante fonctionnait mieux pour moi:

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

Le commutateur --modify-window=1 permet un écart de ± 1 s sur les horodatages. Lorsque cette option est activée, la comparaison d'horodatage sera plus légère et examinera les différences de temps minuscules entre les systèmes de fichiers NTFS/FAT et Unix.

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

P.S .: Veuillez noter que DST entraînera des transferts de fichiers complets deux fois par an. Voir ici pour plus de détails et les solutions possibles.

17
Glutanimate

Les horodatages dans FAT32 sont trop différents de ceux unix pour pouvoir compter sur eux pour vérifier les modifications de fichiers. Vous devez également utiliser le commutateur -c. Cela forcera rsync à comparer tous les fichiers pour détecter les modifications plutôt que de se fier aux horodatages. Cela fonctionnera, mais c'est plus lent.

Enfin, votre commande contient plusieurs options qui ne peuvent pas fonctionner avec les systèmes de fichiers FAT32.

  • -l préservera les liens, FAT32 n'a pas de concept de liens
  • -p va essayer de conserver les permissions, encore aucune fois sur FAT32
  • -t tentera de conserver les horodatages de modification, il n'y a qu'un seul horodatage sur FAT32
  • -g essaiera de préserver la propriété du groupe, encore une fois non prise en charge par FAT32
  • -D essaiera de préserver les fichiers et périphériques spéciaux, à vous maintenant de savoir ce qui vient ici.

Comme le dit le commentaire, les options non valides ne vous feront pas de mal, elles ne feront rien. Mais vous devez ajouter -c switch.

Ce:

rsync -vrc source dest

devrait fonctionner (au moins ça marche sur mon ordinateur).

11
Javier Rivera

J'avais un problème similaire sous OSX et la réponse de Glutanamate n'a pas aidé. Certains fichiers diffèrent d'une heure. C'est peut-être parce que j'ai tendance à traverser les fuseaux horaires assez souvent. Les autres fichiers sont désactivés à un jour ou même un mois. Je ne sais pas pourquoi c'est. L’analyse de certains fichiers avec des horodatages très différents montre qu’ils sont, en réalité, identiques.

Dans tous les cas, cela ressemble à l'option --size-only, qui indique à rsync d'ignorer les horodatages, fonctionnera à mes fins. -c/--checksum (comme mentionné par Javier) fonctionne également, mais prend un peu plus de temps. Je l'ai chronométré et il a fallu environ une minute pour comparer les sommes de contrôle pour le Go environ dans le sous-répertoire avec lequel je travaille. Bien entendu, la vitesse à laquelle cela se produira dépendra du lecteur le plus lent du système. dans mon cas, c'est la carte SD de mon téléphone. Cependant, c'était après avoir déjà manipulé des fichiers (y compris des contrôles), de sorte que de nombreux fichiers ont peut-être déjà été copiés dans le cache RAM.

3
intuited

Vous devriez également éviter d'utiliser l'option -a populaire. Ma recommandation sur FAT32 est

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

--no-p: pas de permission

--delete: supprime les fichiers et les dossiers sans correspondance dans la destination (si vous le souhaitez vraiment)

--progress: affiche les progrès pendant le transfert. C'est bon pour les gros fichiers.

1
Ahmad Yoosofan

C'est trop de drapeaux (-vrlptgD) que vous utilisez. Rappelez-vous que rsync est un utilitaire Linux et ne fonctionne pas efficacement avec Fat32 et NTFS.

Vous devez rechercher des astuces pour pouvoir l'utiliser.

Essayer:

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

Plus d'infos ici

0
Raman Kathpalia