我发现自己经常遇到这样的情况,当pv image_file | dd of=/dev/slow_usb_stick显示最初的几百兆字节只会飞到缓冲区时,传输速度就会慢下来。当dd退出时,就会有整个缓冲区需要刷新。然后,为了删除sync,我不得不再等几分钟,因为缓冲区很大,设备也很慢。
所以也许是关于耐心的。我认为缓冲区大小取决于可用内存。有时缓冲区会非常大,sync会“卡住”,有时不会。那只是猜测。
我观察到的另一个现象是:sync会刷新所有缓冲区(即所有设备)。有几次,我想移除USBS即插即用(在dd之后),调用sync这样做,但与此同时,我的硬盘正忙于大规模的写操作。对于缓冲区来说,HDD的数据总是来得太快,以至于不能空。冷冻sync与当时的dd无关。出于这个原因,我希望sync能够针对特定的设备并退出,而不管其他设备。
编辑:我的愿望实现了。在Ubuntu16.04.2LTS中,我有sync (GNU coreutils) 8.25,它可以针对特定的文件系统。万岁!