我试着在U盘上复制一些文件夹和文件,然后在一切都完成后,把U盘取下来。实现方式如下:
使用mkdir在U盘上创建相应的文件夹结构
fsync在创建文件夹后在每个目录描述符上
复制文件内容(使用C++流)
fsync在复制每个文件后在每个文件描述符上
在复制完最后一个文件后,我立即取出U盘(~500ms-1s)。但有时整个文件夹结构会丢失。为了避免这种情况,在复制最后一个文件之后,我再次对每个目录描述符使用fsync。这次所有的文件和文件夹都出现在U盘上,但有时文件夹结构中有垃圾,或者U盘损坏。U盘文件系统是vfat。知道如何正确保存数据吗?

最佳答案

卸下设备之前请先卸下它。对于像vfat这样的非日志文件系统,不能保证该文件系统在装入时在磁盘上处于一致状态。

关于linux - 如何安全地在USB内存棒上写入数据-Linux(ARM)-C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23303216/

10-16 12:38