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)?
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.
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.
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).
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.
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.
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