代码之家  ›  专栏  ›  技术社区  ›  Vikrant Chaudhary

如何从命令行刷新硬盘和闪存(或文件系统)的缓存?

  •  17
  • Vikrant Chaudhary  · 技术社区  · 15 年前

    我在写一个备份脚本

    1. 将数据复制到备份磁盘。
    2. 刷新备份磁盘。
    3. 执行哈希完整性检查。

    在我以前 sleep(60) 等待一分钟,以便内核自动刷新数据。我想这太过分了所以现在我在努力 sudo hdparm -F --verbose /dev/disk 但它报告了错误- HDIO_DRIVE_CMD(flushcache) failed: Invalid exchange 多次。

    我想知道有没有什么标准的方法可以将缓存刷新到硬盘。我想是因为 usb-creator-gtk 是吗? umount 做到了。

    我用的是ubuntu x64 9.10

    PS:我尽量避免 “同步” 因为这一页说 安全。 http://ubuntuforums.org/showthread.php?t=589975

    2 回复  |  直到 10 年前
        1
  •  31
  •   Duck    15 年前

    sync 够了吗?

    编辑: 关于你的编辑-你试图避免同步,因为在互联网上有人把一个cya免责声明在他的帖子上?可能是同步有问题,我不知道,但这可能值得第二个帖子本身。

    不过,在Linux信息页面上:

    sync将内存中缓冲的所有数据写入磁盘。这个罐头 包括(但不限于)修改的超级块、修改的索引节点, 以及延迟的读写。这必须由内核实现; 同步程序只执行“同步”系统调用。

        2
  •  3
  •   George    10 年前

    您需要fsync(man section 2)函数调用,但如果在脚本中执行此操作,则可能需要使用sync命令(man section 8),该命令只调用sync()。