Problèmes de copie sur une carte SD formatée VFAT

0

J'allais copier mes fichiers musicaux (encodés au format MP3) (organisés dans un répertoire) sur une carte (micro) sd (au format vfat) pour les utiliser dans mon lecteur audio numérique (DAP) (sous Linux). J'avais l'habitude d'utiliser la même combinaison depuis environ 1 an maintenant et cela fonctionnait toujours.

À présent, j'ai copié une grande partie de ma collection de CD. Le nombre de fichiers a donc considérablement augmenté et les balises des anciens fichiers ont également été mises à jour. Donc, fondamentalement, je devais copier la plupart sinon tous les fichiers sur la carte de toute façon. C'est pourquoi j'ai décidé de commencer avec une nouvelle carte SD formatée:

sudo mkfs.vfat /dev/mmcblk0p1

Ensuite, je viens de copier ma musique sur la carte:

mount /mnt/cardreader
cp -r ~/music/* /mnt/cardreader/
umount /mnt/cardreader

où my /etc/fstabcontient la ligne suivante

/dev/mmcblk0p1          /mnt/cardreader auto            noauto,user             0 0

Après avoir mis à jour la base de données du DAP et écouté de la musique (à l'aide de RockBox), j'ai remarqué de courtes parties (peut-être une à deux secondes) d'autres pistes "mélangées" aux chansons stockées sur la carte SD. Cela ne s'est pas produit lorsque j'ai joué une chanson stockée dans la mémoire interne du DAP.

Alors, j'ai rebranché la carte SD dans ma machine Linux, je l'ai montée et j'ai joué quelques chansons avec mplayer. Cela a donné le même comportement étrange. Même en ne jouant qu'une chanson, d'autres étaient mixées, aussi ai-je exclu toute relation RockBox-base de données.

Courir a fsck.vfatrenvoyé beaucoup d’erreurs (que je n’ai ni rappelées en détail ni enregistrées, malheureusement). J'ai donc décidé de recommencer et d'utiliser rsyncce temps car, selon sa page de manuel

... rsync vérifie toujours que chaque fichier transféré a été correctement reconstruit du côté de la réception en vérifiant la somme de contrôle de l'ensemble du fichier générée lors du transfert du fichier ...

et je veux que les futures mises à jour ne copient de toute façon que les fichiers nouveaux / modifiés:

mount /mnt/cardreader
rsync -rltDvP --modify-window=1 --stats ~/music/* /mnt/cardreader
umount /mnt/cardreader

Cela dure plusieurs heures et échoue parfois dans les tentatives de modification du système de fichiers cible ou de tentatives infructueuses de modification des autorisations. Ceci est quelque peu irritant car la carte SD a été montée en lecture / écriture et il ne devrait y avoir aucune approche pour modifier les autorisations (aucune -gou -ooption n’a été donnée à rsync), mais l’exécution de rsyncplusieurs fois permettait de la laisser se terminer sans erreur. S'il n'arrêtait pas de se plaindre de la lecture seule de la carte SD, le remontage corrigeait cela.

Cependant, je continue à rencontrer le problème décrit et

sudo fsck.vfat -aV /dev/mmcblk0p1

se plaint de mauvais noms de fichiers courts et tente de renommer sans cesse les mêmes fichiers sans terminer (j'ai attendu environ deux fois plus de temps que nécessaire pour copier les fichiers à l'aide de cp).

  • Que recommanderiez-vous pour retrouver l'erreur?
  • Existe-t-il un meilleur moyen (c.-à-d. Plus sécurisé) (Linux) de copier ces fichiers sur la carte SD?
  • Est-ce que j'utilise les mauvaises options pour un ou plusieurs des appels ci-dessus?
  • Ou pensez-vous que ma carte SD (qui a fonctionné comme un charme pour la dernière année) est en train de se briser lorsque j'ai décidé de mettre à jour ma bibliothèque musicale?

Addenda

Même si je remarqué le problème en utilisant mon DAP, il arrive aussi quand je le format, mount, rsync, umount, retirez la carte, redémarrez l'ordinateur, branchez la carte, mount, rsync(ne rien faire) et lire un fichier: Lecture à partir de la carte SD est "remixé", la lecture du fichier source semble normale.

mschilli
la source
J'ai eu exactement les mêmes symptômes il y a longtemps en utilisant une clé USB. Peut-être avez-vous commencé le processus umount mais n'avez pas attendu sa fin?
Tim
@ Tim: J'ai exécuté toutes les commandes ci-dessus à partir du même shell. Je suppose que umount ne quitterait pas avant d'avoir terminé, n'est-ce pas? Comment pourrais-je vérifier si c'était fait?
mschilli
Il ne sortirait pas avant d'avoir été fait. Puisque umount est la dernière commande, je n’étais pas sûr d’avoir attendu jusqu’à ce qu’elle revienne (et vous pourriez exécuter la commande suivante). Que se passe-t-il si vous ne le mettez pas dans votre DAP? Transférez simplement les fichiers et branchez la carte comme d’habitude. Puis quelque temps plus tard (peut-être même après un redémarrage), utilisez rsync pour vérifier si votre transfert a réussi. Si oui, essayez si votre DAP y parvient ...
Tim