O que você está pedindo não é apenas um sistema de arquivos "invertido". Você quer um sistema de arquivos estruturado por registro , “revertido”, ou seja, um sistema de arquivos de registro em que o registro adicionado aparece pela última vez primeiro no arquivo. Na verdade, o aspecto invertido provavelmente seria implementado como "você pode inserir um registro antes do primeiro registro existente".
As interfaces do sistema de arquivos encontradas no sistema operacional normalmente encontradas em PCs (Unix, Windows e outras mais exóticas) são estruturadas apenas em bytes - elas não têm noção de registro. Então você está sem sorte.
Uma abordagem possível seria tornar cada entrada de log um arquivo separado no diretório. Em seguida, percorra o diretório na ordem inversa do tempo de criação do arquivo, ou na ordem inversa dos nomes, se você der nomes monotonicamente crescentes para as entradas de log. Como é provável que você tenha um grande número de entradas de log, certifique-se de usar um sistema de arquivos que suporte diretórios grandes (por exemplo, no Linux reiserfs e ext3 com o recurso dir_index
são ok mas ext2 não), ou então use subdiretórios (um para as primeiras 1000 entradas, uma para os próximos 1000 e assim por diante).
Outra abordagem seria usar um banco de dados mais sofisticado, por exemplo, um que você possa consultar em SQL e apenas selecionar os registros em ordem inversa de sua criação ( SELECT message FROM logs ORDER BY date DESC
).