Я собирался скопировать мои (в кодировке mp3) музыкальные файлы (организованные в одном каталоге) на (микроформат) sd-карту (в формате vfat) для использования в моем цифровом аудиоплеере (DAP) (в Linux). Я использовал одну и ту же комбинацию около 1 года, и она всегда работала.

Теперь я скопировал огромную часть своей коллекции компакт-дисков, поэтому количество файлов резко увеличилось, и я также обновил теги для старых файлов. Так что в основном мне пришлось копировать большинство, если не все файлы на карту, так или иначе. Вот почему я решил начать со свежей отформатированной SD-карты:

sudo mkfs.vfat /dev/mmcblk0p1

Затем я просто скопировал свою музыку на карту:

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

где мой /etc/fstab содержит следующую строку

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

После обновления базы данных DAP и воспроизведения некоторой музыки (используя RockBox), я заметил короткие (возможно, 1-2 секунды) другие треки, "смешанные" с песнями, которые были сохранены на SD-карте. Этого не произошло, когда я проиграл песню, хранящуюся во внутренней памяти DAP.

Поэтому я подключил SD-карту обратно в свой Linux-бокс, подключил ее и проиграл несколько песен, используя mplayer. Это дало такое же странное поведение. Даже играя только одну песню, другие были смешаны, поэтому я исключил любую связь RockBox с базой данных.

Запуск fsck.vfat вернул много ошибок (которые я, к сожалению, не помню ни подробно, ни записал). Поэтому я решил начать все сначала и использовать rsync так как, согласно его man-странице

... rsync всегда проверяет, что каждый переданный файл был правильно восстановлен на принимающей стороне, проверяя контрольную сумму всего файла, которая генерируется при передаче файла ...

и я хочу, чтобы будущие обновления копировали только новые / измененные файлы:

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

Это выполняется несколько часов и иногда не дает жалоб на то, что целевая файловая система доступна только для чтения, или неудачные попытки изменить разрешения. Это несколько раздражает, так как SD-карта была смонтирована для чтения / записи, и не должно быть никаких подходов к изменению прав доступа (-g или -o указана для rsync), но запуск rsync несколько раз в конечном итоге позволяет завершить работу без ошибок. Если он продолжал жаловаться на то, что SD-карта доступна только для чтения, повторная установка исправила это.

Однако я продолжаю сталкиваться с описанной проблемой и

sudo fsck.vfat -aV /dev/mmcblk0p1

жалуется на плохие короткие имена файлов и пытается переименовывать одни и те же файлы снова и снова, не заканчивая (я ждал примерно вдвое больше времени, чтобы скопировать файлы с помощью cp).

  • Что бы вы посоветовали отследить ошибку?
  • Есть ли лучший (то есть более безопасный) (Linux) способ скопировать эти файлы на SD-карту?
  • Я использую неправильные опции для одного или нескольких из вышеуказанных вызовов?
  • Или вы думаете, что моя SD-карта (которая работала как брелок в прошлом году) просто сломалась, когда я решил обновить свою музыкальную библиотеку?

добавление

Несмотря на то, что я заметил проблему с использованием моего DAP, это также происходит, когда я форматирую, mount , rsync , umount , отключаю карту, перезагружаю компьютер, подключаю карту, mount , rsync (ничего не делая) и воспроизводю файл: Воспроизведение с SD-карта "ремикширована", воспроизведение исходного файла звучит нормально.

0