¿Cómo cargar el directorio en la caché del sistema de archivos?

¿Cómo cargar el directorio en la caché del sistema de archivos?

Tengo un directorio de varios GB al que rara vez se accede, pero cuando lo esté, me gustaría poder leer los archivos que contiene rápidamente en lugar de tener que esperar. Dado que rara vez se accede a los archivos, no estarán en la memoria caché del sistema de archivos, pero me gustaría sugerir que Linux los cargue previamente en la memoria caché del sistema de archivos antes de acceder a ellos.

Algunos pueden argumentar que tendré que esperar a que los cargue la primera vez, por lo que no ahorraré tiempo; basta decir que en mi caso de uso particular puedo automatizar esto, por lo que no es cuestión de guardar. tiempo del sistema, es una cuestión de ahorrar tiempo al usuario (ya que no necesita esperar si los archivos están en caché).

También me doy cuenta de que el caché del sistema de archivos no es una garantía sin usar algo como tmpfs, es una sugerencia para el sistema operativo y estoy de acuerdo con esto.

Entonces parece que el método obvio sería hacer:

tar -cf - /mydirectory > /dev/null

Sin embargo, cuando hago esto, el comando regresa inmediatamente, incluso para un directorio de varios GB. Parece que bash ve que la salida se dirige a /dev/null y optimiza todo el comando, por lo que tar ni siquiera lee del directorio.

¿Qué es un comando simple para hacer que el sistema operativo lea todos los archivos en un directorio?

Respuesta1

No es bash el que hace esta optimización, es GNU tar. Reconoce cuándo es su salida /dev/nully no lee el contenido de los archivos.

O haga arreglos para que la salida no sea /dev/null:

tar -cf - /mydirectory > /dev/zero

O utilice una herramienta diferente, como

find . | cpio -o >/dev/null
find . -type f -exec cat {} + >/dev/null

información relacionada