Você pode tentar o cache de arquivos nginx para isso, se você estiver ok com a interface http. Veja cache de conteúdo nginx .
Eu tenho um caso onde eu gostaria de usar o disco local como um cache LRU para arquivos (quentes) de um serviço web separado (algo como S3). Se o arquivo não existir no disco, o arquivo será lido pela Internet, gravado no disco local e, em seguida, as solicitações futuras poderão usar o cache local em vez de lê-lo na fonte original.
Como a quantidade de dados armazenados no serviço da Web excederá o armazenamento local, desejo eliminar os arquivos locais de forma automática e transparente quando um novo arquivo for gravado, se a loja já estiver cheia. Se possível, gostaria de evitar uma situação em que eu tenha uma tarefa Cron que verifique atime e expire os arquivos após um certo tempo, pois não há motivo específico para expirar os itens de cache com base no tempo se nenhum arquivo estiver sendo gravado.
Eu tentei encontrar algo como tmpfs que me permite implementar algo semelhante a um cache de disco (em SSDs) da forma mais transparente possível para o aplicativo que usa o cache, mas não consegui encontrar nada que implementa essa funcionalidade (semelhante ao que o CacheFS faz para o NFS, mas de uma maneira mais geral).
Você pode tentar o cache de arquivos nginx para isso, se você estiver ok com a interface http. Veja cache de conteúdo nginx .
Tags cache linux filesystems disk-cache