我正在编写一个 bash 脚本,该脚本将文件从一个“源”pendrvie 复制到多个其他文件(如果未安装,还将驱动器格式化为 FAT32)。
我正在使用 rsync 复制文件。
我注意到 rsync 完成得非常快,有时会报告可笑的写入速度,例如 500 MB/s,但通常保持在 15 MB/s。
问题是,之后卸载驱动器可能需要长达几分钟的时间,我发现这是因为系统磁盘缓存和异步 I/O。
我想知道以“同步”模式而不是默认的“异步”模式安装驱动器是否允许 rsync 进程显示真实的写入速度,并避免长时间卸载,而这种情况无法轻松监控。
我想跟踪真正的进度并产生合理的预计到达时间会更容易,但我担心我会以某种方式损害性能,并禁用一些很酷的功能(例如强制从源重新读取每个副本)驱动器而不是 RAM 缓存)。
在这个特定的用例中,同步相对于异步可以产生哪些优点和缺点?
答案1
是的,这是因为磁盘缓存:在卸载之前,必须完成所有挂起的写入。
安装它sync
不会改善所需的总时间:需要写入的内容需要写入,无论是否rsync
已经退出。事实上,挂载sync
可能会强制某些块被不必要地写入多次(例如目录),这会稍微缩短棒的寿命,并且还会增加所需的总时间。
如果您想监控实际的写入速度,只需使用不同的工具,例如atop
或iotop
,它将显示特定设备的写入速度。
监控或编写完整交易的脚本也很容易:只需等待最终umount
返回,而不必担心何时rsync
完成。
所以我建议不要使用sync
.