Проблеми копіювання на SD-карту VFAT


0

Я збирався скопіювати мої (mp3-закодовані) музичні файли (організовані в одну директорію) на (vfat-відформатований) (мікро-) sd-карту, щоб використовувати її в моєму цифровому аудіопрогравачі (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-карти "ремікс", відтворення вихідного файлу звучить нормально.


Я мав точно такі ж симптоми давно, використовуючи mp3 USB флешку. Можливо, ви почали процес umount, але не чекали, поки він не закінчиться?
Tim

@Tim: Я виконав всі вищезазначені команди з однієї оболонки. Я припускаю, що umount не вийде, перш ніж це було зроблено, чи не так? Як я можу перевірити, чи було зроблено це?
mschilli

Це не виходило б до того, як це було зроблено. Оскільки umount є останньою командою, я не був впевнений, що ви чекали, поки він не повернеться (і ви можете виконати наступну команду). Що трапиться, якщо ви не помістите його в свій DAP? Просто перенесіть файли і вийміть карту як завжди. Потім через деякий час (можливо, навіть після перезавантаження) використовуйте rsync, щоб перевірити, чи ваша передача була успішною. Якщо так, спробуйте, якщо ваш DAP викручує його ...
Tim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.