0

我正在尝试在 USB 记忆棒上复制一些文件夹和文件,并且在一切完成后立即移除 USB 记忆棒。实现是这样的:

  • 使用在 U 盘上创建相应的文件夹结构mkdir
  • fsync在创建文件夹后的每个目录描述符上
  • 复制文件内容(使用 C++ 流)
  • fsync复制每个文件后的每个文件描述符

复制最后一个文件后,我立即移除了 USB 记忆棒(约 500 毫秒 - 1 秒)。但有时会丢失整个文件夹结构。为了避免这种情况,我fsync在复制最后一个文件后再次在每个目录描述符上使用。这次所有文件和文件夹都存在于 U 盘上,但有时我的文件夹结构中有垃圾或 U 盘损坏。U 盘文件系统是 vfat。关于如何正确保存数据的任何想法?

4

2 回答 2

3

在移除设备之前先卸载设备。对于像 VFAT 这样的非日志文件系统,不能保证文件系统在挂载时在磁盘上处于一致状态。

于 2014-04-25T21:53:17.600 回答
1

写入后,使用选项“-o remount,ro”执行“mount”。这将写入所有内容并更改为只读模式。其他应用程序可以打开文件。

对于写作,使用选项“-o remount,rw,noatime”执行“mount”

于 2015-08-22T14:07:04.020 回答