rsync ne fonctionne pas entre NTFS / FAT et EXT

13

J'ai de la musique que je joue dans ma voiture, à partir d'une clé USB FAT32. Le dossier que j'utilise pour mettre des chansons est stocké sur mon disque dur EXT4. J'ajoute / supprime / répète régulièrement des chansons et souhaite parfois rsyncapporter des modifications à la clé USB. Mais pour une raison inconnue (peut-être des autorisations?), rsyncCopie tous les fichiers à chaque fois plutôt que de simplement les modifier. J'appelle rsynccomme:

rsync -vrlptgD source dest

Comment puis-je le faire fonctionner comme je le veux (c'est-à-dire savoir quand un fichier n'a pas été modifié et ne pas le copier)?

wim
la source

Réponses:

17

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

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

Le --modify-window=1commutateur permet une variation de ± 1 s sur les horodatages. Avec cette option activée, la comparaison d'horodatage sera plus clémente et examinera les minuscules différences de temps entre les systèmes de fichiers NTFS / FAT et Unix.

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

PS: veuillez noter que l'heure d'été entraînera des transferts de fichiers complets deux fois par an. Voir ici pour plus de détails et des solutions possibles.

Glutanimate
la source
C'est bien. J'ai également trouvé l'option --iconvutile lors du passage de la source Linux à la destination MacOS
wim
2
Pour une raison quelconque, je dois utiliser modify-window=2car =1copie toujours tous les fichiers. Copie de NTFS vers FAT32. Après ça, ça va.
Luc
J'ai ajouté le --size-onlydrapeau pour ignorer les fichiers qui correspondent à la taille
alexandre1985
1
@ alexandre1985: Cela supprimera les fichiers qui modifient leur contenu mais pas leur taille. Vous ne devez l'utiliser que lorsque vous souhaitez uniquement sauvegarder des fichiers dont la taille change toujours lorsqu'ils changent de contenu, par exemple parce que les données leur sont uniquement ajoutées mais jamais écrasées.
David Foerster
11

Les horodatages en FAT32 sont trop différents des horodateurs Unix pour pouvoir compter sur eux pour vérifier les modifications de fichiers, vous devez également utiliser le commutateur -c, il forcera rsync à comparer tous les fichiers pour détecter les modifications au lieu de se fier aux horodatages. Cela fonctionnera, mais c'est plus lent.

Enfin, il existe quelques options dans votre commande qui ne peuvent pas fonctionner avec les systèmes de fichiers FAT32.

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

Comme le remarque le couple, les options invalides ne vous feront pas de mal, elles ne feront rien. Mais vous devez ajouter le commutateur -c.

Cette:

rsync -vrc source dest

devrait fonctionner (au moins cela fonctionne sur mon ordinateur).

Javier Rivera
la source
3

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 d'un jour, voire d'un mois. Je ne sais pas pourquoi c'est. La vérification de la somme de certains fichiers avec des horodatages très différents montre qu'ils sont en effet identiques.

Dans tous les cas, il semble que l' --size-onlyoption, qui dit rsyncd'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 sûr, la vitesse à laquelle cela se produit 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 que j'avais déjà fait quelques manipulations de fichiers (y compris la somme de contrôle), donc beaucoup de fichiers peuvent avoir déjà été copiés dans le cache RAM.

intuition
la source
1

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

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

--no-p: aucune autorisation

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

--progress: affiche la progression pendant le transfert. C'est bon pour les gros fichiers.

Ahmad Yoosofan
la source
1
Avoir un upvote de moi bien qu'en plus -vrc, je fais aussi-vrcz
Antony
0

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

Il faudrait chercher des astuces pour pouvoir l'utiliser.

Essayer:

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

Plus d'infos ici

Raman Kathpalia
la source