![有没有办法只同步一个分区?](https://linux22.com/image/20287/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%8F%AA%E5%90%8C%E6%AD%A5%E4%B8%80%E4%B8%AA%E5%88%86%E5%8C%BA%EF%BC%9F.png)
有没有一种方法可以只同步一个分区而不是所有分区?
类似于“sync /dev/sdc1”。
答案1
您可以使用同步选项重新安装,然后使用异步重新安装:
mount -o remount,sync /mountpoint
mount -o remount,async /mountpoint
使用重新安装选项不会干扰使用重新安装的文件系统的进程。
答案2
有一个标准函数可以同步一个文件的数据(和元数据):fsync
。没有标准或通用的 shell 命令来访问它,但您可以使用 perl 的sync
方法IO::Handle
:
perl -MIO::File -e 'new IO::File($ARGV[0], "r+")->sync()' filename
没有标准或通用的函数或 shell 命令可以仅同步一个分区。
在最近的 Linux 系统,有syncfs
系统调用(在内核 2.6.39 中引入,并自此公开)glibc 2.14)。我认为这个系统调用还没有在 coreutils 或 util-linux 中公开。
答案3
现在可以使用sync -f
:
sync -f /mount/point
摘自同步(1):
-f, --file-system
sync the file systems that contain the files
答案4
如果您指的是sync
将内存中的数据刷新到磁盘的实用程序,那么答案是否定的。这是因为它sync
通常在关机或重新启动过程中使用,建议将数据安全写入磁盘,并且操作的真正目标是内存,而不是磁盘,并从 RAM 中获取缓冲数据到安全的地方。磁盘正是数据存放的地方。