A resposta mais geral e mais simples primeiro:
Assumindo que a área de status do dpkg está intacta, você pode determinar se algum pacote instalado está faltando arquivos registrados com algo como:
for p in $(dpkg-query -f '${Package} ' -W); do
dpkg -L $p | grep '^/' | while read file; do
[ -e "$file" ] || echo "$p is missing $file"
done
done
Para limitar a verificação a arquivos em /var
, você poderia apenas alterar a expressão do grep:
for p in $(dpkg-query -f '${Package} ' -W); do
dpkg -L $p | grep '^/var/' | while read file; do
[ -e "$file" ] || echo "$p is missing $file"
done
done
No entanto, isso pode ser de utilidade limitada para você. Em parte porque a maioria dos pacotes no Debian / Ubuntu não envia muitos arquivos diretamente para /var
, e também porque a área de status do dpkg que mencionei vive em /var
, em /var/lib/dpkg
. Se alguma coisa foi deletada de lá, seu problema fica um pouco mais complicado.
A maioria dos dados em /var
é "dados variáveis"; msgstr "diretórios e arquivos de spool, dados administrativos e de log, e arquivos transitórios e temporários" de acordo com o FHS. Muito disso, se não a maioria, não retornará, mesmo se você reinstalar todos os pacotes. Mas, da mesma forma, seu sistema provavelmente ainda funciona muito bem sem ele.
Os dados mais importantes em /var
são seus próprios dados; isso pode ser conteúdo do banco de dados, correio, crontabs e outros. A maioria estará abaixo de /var/lib
, /var/mail
, /var/spool
e /var/local
e /var/opt
. Se esse tipo de dados tiver sido excluído, talvez seja necessário esperar bons backups. De menor importância são os logs do sistema em /var/log
. Se esses foram embora, obviamente você perdeu alguma habilidade para diagnosticar problemas passados, mas tudo ainda deve funcionar . Os diretórios mais comuns restantes em /var
, ( /var/backups
, /var/cache
, /var/run
, /var/lock
, /var/tmp
; alguns deles podem ser links simbólicos para /run
ou em outro lugar) e você não precisará preocupado sobre; os dados devem ser regeneráveis pela aplicação proprietária.
Por fim, se você não tiver reiniciado o sistema ou os daemons do sistema desde a operação de exclusão acidental, alguns dos arquivos que parecem ser excluídos ainda podem estar invisíveis, abertos por algum processo. A ferramenta lsof
pode ajudá-lo a encontrá-los e você pode recuperar arquivos assim copiando-os de /proc/$pid/fd/$fdnumber
.