Is there a way to sync only one partition instead of all partitions?
Something like "sync /dev/sdc1".
you can remount with sync option and then remount it back with async:
mount -o remount,sync /mountpoint
mount -o remount,async /mountpoint
Using remount option will not mess with processes using remounted filesystem.
There is a standard function to synchronize data (and metadata) of one file: fsync
. There is no standard or common shell command to access it, but you can use perl's sync
method in IO::Handle
:
perl -MIO::File -e 'new IO::File($ARGV[0], "r+")->sync()' filename
There is no standard or common function or shell command to synchronize just one partition.
On recent Linux systems, there is the syncfs
system call (introduced in kernel 2.6.39, and exposed since glibc 2.14). I don't think this system call is exposed in coreutils or util-linux yet.
It is now possible with sync -f
:
sync -f /mount/point
Excerpt from sync(1):
-f, --file-system
sync the file systems that contain the files
If you mean the sync
utility that flushes data in memory to disk, then the answer is no. This is due to the fact that sync
is generally used during a shutdown or reboot procedure, where it's advisable to get data written safely to disk, and the real target of the operation is memory, not the disks, and getting that buffered data out of RAM to somewhere safe. The disks are just where the data ends up.