Найти пакеты, файлы которых были удалены или отсутствуют после установки

Я просто случайно сделал rm -r /var, но, к счастью, мне удалось это сделать до того, как были нанесены дополнительные убытки. Есть ли способ узнать все пакеты, файлы которых были удалены в этой папке, чтобы я мог их переустановить?

% 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
1
задан 14 January 2014 в 05:46

2 ответа

Сначала ответ более общий и простой:

Предполагая, что область состояния dpkg не повреждена, вы можете определить, отсутствуют ли в каких-либо установленных пакетах зарегистрированные файлы, например:

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

ограничив проверку файлами в /var, вы можете просто изменить выражение 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

Однако это может иметь ограниченную полезность для вас. Частично потому, что большинство пакетов в Debian / Ubuntu не отправляют много файлов напрямую в /var, а также потому, что область состояния dpkg, о которой я упоминал , живет в /var, в /var/lib/dpkg. Если что-то было удалено оттуда, ваша проблема становится немного более сложной.

Большинство данных в /var являются «переменными данными»; "спуфить каталоги и файлы, административные и журнальные данные, а также временные и временные файлы" в соответствии с FHS. Большая часть этого, если не большая часть, не вернется, даже если вы переустановите все пакеты. Но, к тому же, ваша система, вероятно, все еще может работать довольно хорошо без нее.

Наиболее важные данные в /var - это ваши собственные данные; это может быть содержимое базы данных, почта, crontabs и тому подобное. Большая часть этого будет в соответствии с /var/lib, /var/mail, /var/spool и /var/local, и /var/opt. Если данные такого рода были удалены, то вам, возможно, просто нужно надеяться на хорошие резервные копии. Как правило, менее важны системные журналы в /var/log. Если они исчезли, очевидно, вы потеряли способность диагностировать прошлые проблемы, но все должно работать . Остальные наиболее распространенные каталоги в /var, (/var/backups, /var/cache, /var/run, /var/lock, /var/tmp; некоторые из них могут быть символическими ссылками на /run или где-либо еще), вам не нужно беспокоюсь о; данные должны быть восстановлены приложением-владельцем.

Наконец, если вы не перезагружали свою систему или системные демоны после операции случайного удаления, некоторые из файлов, которые кажутся удаленными, могут все еще незаметно зависать, оставаясь открытыми каким-либо процессом. Инструмент lsof может помочь вам найти их, и вы можете извлечь такие файлы, скопировав их из /proc/$pid/fd/$fdnumber.

0
ответ дан 14 January 2014 в 05:46

Я бы пошел в более простом подходе.

Помните, что у вас есть зеркало (кеш, собственно) всех ваших установленных пакетов в

/var/cache

Так что, если вы хотите восстановить программы и настройки, просто войдите в кеш и переустановите вещи там. Конечно, это будет работать только в том случае, если вы не установили ничего, что могло бы сломать вашу систему, И если вы не удалили кеш пакетов apt (зачем вам делать что-то подобное!?) .

Если это так, я пойду на:

cd /var/cache/apt/archives/

sudo apt-get install *.deb

Опять же, вы должны делать это только в том случае, если ваша система работала нормально до удаления материала. В любом случае, вы найдете все установленные пакеты в этом месте, перенастроив ваши настройки, как при первой установке (так что вы получите программы + конфиги, несмотря на комментарий ниже).

0
ответ дан 14 January 2014 в 05:46

Другие вопросы по тегам:

Похожие вопросы: