How to flush cache of hard-disk and flash-disk (or filesystem) from command line?
linux, ubuntu
Solution
Does `sync` suffice?
Edit: regarding your edit - you are trying to avoid sync because some guy on the internet put a CYA disclaimer on his post? Maybe there is something wrong with sync of which I am unaware but that might be worth a 2nd post in itself.
Still, from the linux info pages:
sync writes any data buffered in memory out to disk. This can include (but is not limited to) modified superblocks, modified inodes, and delayed reads and writes. This must be implemented by the kernel; The sync program does nothing but exercise the 'sync' system call.
Problem
I'm writing a backup script which - Copies the data to backup disk. - Flushes the backup disk. - Performs a hash integrity check. Before I used to do `sleep(60)` for waiting a minute so that data is automatically flushed by the kernel. Which I guess is overkill so now I'm trying `sudo hdparm -F --verbose /dev/disk` but it reports error - `HDIO_DRIVE_CMD(flushcache) failed: Invalid exchange` multiple times. I'm wondering is there any standard way to flush the cache to hard disk. I think there is because `usb-creator-gtk` does it, `umount` does it. I'm using Ubuntu x64 9.10 PS: I'm trying to avoid "sync" because this page says that it is not safe. http://ubuntuforums.org/showthread.php?t=589975