I / O concept flush vs sync

Me he encontrado con estos dos términos y mi comprensión de ellos parece superponerse entre sí. Flush se usa con buffers y la sincronización se usa para hablar sobre los cambios persistentes de archivo a disco.

En C, fflush (stdin) se asegura de que se borre el búfer. Y fsync para persistir cambia el archivo al disco.

Si estos conceptos no están universalmente definidos, preferiría una explicación de Linux, Java.

Encontré una publicación relacionada, pero en realidad no respondo mi pregunta.Realmente forzar sincronización / descarga de archivos en Java

Respuestas a la pregunta(1)

Su respuesta a la pregunta