Encontre pacotes cujos arquivos foram apagados ou faltando após a instalação

1

Eu acidentalmente fiz rm -r /var , mas felizmente consegui fazê-lo antes que mais danos fossem feitos. Existe uma maneira de descobrir todos os pacotes cujos arquivos foram excluídos no local para que eu possa reinstalá-los?

% ls -l /var
total 20
drwxr-xr-x  2 root root 4096 Jan 14 08:26 backups
drwxr-xr-x 23 root root 4096 Jan  6 20:26 cache
drwxr-xr-x 70 root root 4096 Jan 14 09:26 lib
lrwxrwxrwx  1 root root    9 Oct 31 17:53 lock -> /run/lock
drwxrwsr-x  2 root mail 4096 Oct 17 02:59 mail
lrwxrwxrwx  1 root root    4 Oct 31 17:53 run -> /run
drwxr-xr-x 11 root root 4096 Jan 10 22:06 spool
    
por Flint 14.01.2014 / 02:46

2 respostas

1

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 .

    
por the paul 15.01.2014 / 18:31
-1

Eu iria em uma abordagem mais simples.

Lembre-se de que você tem um espelho (um cache, na verdade) de todos os seus pacotes instalados em

/var/cache

Então, se você quiser restaurar programas e configurações, basta entrar no cache e reinstalar o material lá. Claro, isso funcionará apenas se você não instalou nada que tenha quebrado seu sistema de forma preciosa E se você não excluiu o cache de pacotes do apt (por que você faria algo assim!?) .

Se for esse o caso, procurarei:

cd /var/cache/apt/archives/

sudo apt-get install *.deb

Novamente, você deve fazer isso apenas se o seu sistema funcionou bem antes de excluir o material. De qualquer forma, você encontrará todos os pacotes instalados naquele local reconfigurando sua configuração como na primeira instalação (assim você obterá os programas + configurações, apesar do comentário abaixo).

    
por Rho 15.01.2014 / 19:07