Проблеми копіювання на 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.