No padrão de hierarquia do sistema de arquivos, `/ var / lib / é declarado como (em itálico a parte mais importante):
5.8.1 Finalidade
Essa hierarquia contém informações de estado pertencentes a um aplicativo ou sistema. Informações de estado são dados que os programas modificam enquanto são executados e pertencem a um host específico. Os usuários nunca precisam modificar arquivos em / var / lib para configurar a operação de um pacote.
As informações de estado geralmente são usadas para preservar a condição de um aplicativo (ou um grupo de aplicativos inter-relacionados) entre chamadas e entre instâncias diferentes do mesmo aplicativo. As informações de estado geralmente devem permanecer válidas após uma reinicialização, não devem estar registrando saída e não devem ser dados em spool.
Um aplicativo (ou um grupo de aplicativos inter-relacionados) deve usar um subdiretório de / var / lib para seus dados. Existe um subdiretório necessário, / var / lib / misc, destinado a arquivos de estado que não precisam de um subdiretório; os outros subdiretórios devem estar presentes apenas se o aplicativo em questão estiver incluído na distribuição.
/ var / lib / é o local que deve ser usado para todo o suporte ao pacote de distribuição. Distribuições diferentes podem usar nomes diferentes, é claro.
Em resumo: / var / lib / é para dados usados localmente.
Portanto, faz todo sentido colocar os dados de um banco de dados no diretório / var / lib / {mysql | postgress} /, mas ... o FHS é um padrão criado principalmente para uso por distribuições . Como usuário, você é livre para colocar seus dados onde quiser e isso é principalmente uma questão de opinião.
Você está entendendo mal a palavra "local". / usr / local / bin / não é para o software do sistema, mas para o seu próprio software (basicamente qualquer coisa com "local" nunca deve ser tocada pelo sistema. Como explicado pelo FHS:
/ usr / local /
4.9.1 Finalidade
A hierarquia / usr / local é para ser usada pelo administrador do sistema ao instalar o software localmente. Ele deve ser protegido contra substituição quando o software do sistema for atualizado. Pode ser usado para programas e dados compartilháveis entre um grupo de hosts, mas não encontrados em / usr. O software instalado localmente deve ser colocado em / usr / local em vez de / usr, a menos que esteja sendo instalado para substituir ou atualizar o software em / usr.
Um executável instalado a partir do software do sistema nunca deve ir para nada local.
Agora para / usr / lib / .
4.7.1 Finalidade
/ usr / lib inclui arquivos de objetos, bibliotecas e binários internos que não devem ser executados diretamente por usuários ou scripts de shell. Os aplicativos podem usar um único subdiretório em / usr / lib. Se um aplicativo usar um subdiretório, todos os dados dependentes da arquitetura usados exclusivamente pelo aplicativo deverão ser colocados dentro desse subdiretório.
postgressql provavelmente é um daemon iniciado na inicialização? Nesse caso, faz sentido colocá-lo aqui. Você não deve usar o comando sozinho, mas iniciar um serviço. Os arquivos em / usr / lib / tendem a ter seu próprio usuário e grupo e / ou um daemon que restringe o acesso a / var / lib (somente o mysqld pode acessar / var / lib / mysql / por exemplo; será o mesmo para postgressql)