Я собирался скопировать мои (в кодировке 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-карта "ремикширована", воспроизведение исходного файла звучит нормально.