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