我打算将我的 (mp3 编码) 音乐文件 (组织在一个目录中) 复制到 (vfat 格式) (micro-)sd 卡,以便在我的数字音频播放器 (DAP) (在 Linux 上) 中使用。我曾经使用相同的组合大约 1 年了,它总是有效。
现在我翻录了 CD 收藏中的很大一部分,因此文件数量急剧增加,我还更新了旧文件的标签。所以基本上我必须将大多数(如果不是全部的话)文件复制到卡上。这就是为什么我决定从一张新格式化的 SD 卡开始:
sudo mkfs.vfat /dev/mmcblk0p1
然后我将音乐复制到卡上:
mount /mnt/cardreader
cp -r ~/music/* /mnt/cardreader/
umount /mnt/cardreader
其中 my/etc/fstab
包含以下行
/dev/mmcblk0p1 /mnt/cardreader auto noauto,user 0 0
更新 DAP 的数据库并播放一些音乐(使用 RockBox)后,我注意到其他曲目的短片段(可能 1-2 秒)“混合”到存储在 SD 卡上的歌曲中。当我播放存储在 DAP 内部存储器上的歌曲时,没有发生这种情况。
于是我将 SD 卡重新插入 Linux 机箱,挂载它并使用 mplayer 播放了一些歌曲。这产生了同样奇怪的行为。即使只播放一首歌曲,其他歌曲也混在一起了,所以我排除了任何 RockBox 数据库关系。
运行fsck.vfat
返回了很多错误(不幸的是,我既不记得细节,也没有记录下来)。所以我决定重新开始,利用rsync
这个时间,因为根据它的手册页
...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
SD卡播放是“重新混合”,播放源文件听起来很正常。umount
mount
rsync