Восстановите поврежденный системный каталог (например, / lib)

Вот способ сделать это сохраняющий Ваше использование find команда:

$ find . \( -type d -path */Desktop -o -path */.thunderbird -o -path */Pictures \\) \! -path '*user[45]*' -prune | xargs  tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz

Вот более легкая версия для взгляда на:

$ find . \( -type d                                                   \
     -path */Desktop -o -path */.thunderbird -o -path */Pictures \)   \
     \! -path '*user[45]*' -prune                                     \
  | xargs  tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz

Это найдет все каталоги с именами в первом parens блоке \( ... \). Это каталоги:

  • */Desktop
  • */thunderbird
  • */Pictures

2-я часть исключает любые пути, которые соответствуют шаблону *user[45]*. Они сокращают сокращенный из списка. Наконец получающийся список каталогов к переданному tar.

Дополнительные вещи рассмотреть

Вышеупомянутое НЕ является пуленепробиваемым. Это исключит пути, которые включают строку user4 или user5 в них. Также некоторый уход должен быть дан проверке, что независимо от того, что Вы создаете, поскольку команда может иметь дело с пробелами в именах файлов.

4
17.04.2014, 01:30
4 ответа
[119839] С точки зрения скорости переустановки, я думаю, это было бы быстрее. Так как вам всё равно придётся выбирать системный мир за миром, а не считать время, которое может уйти на последующую отладку некоторых проблем, которые могут быть вызваны этим, то это займёт больше времени. Я бы предложил просто перестроить машину, так как это определённо приведёт систему в стабильное состояние. [119840]
0
27.01.2020, 20:52

Как говорили другие, я, вероятно, сделаю переустановку, если это случилось со мной. Однако, если бы я пытался выполнить ремонт, я бы сначала начал с копирования каталога / lib из динамической установки в мою систему. Если удалить весь / lib , то сначала ничего не будет работать, даже диспетчер (ы) пакетов, поэтому такой шаг может потребоваться. Затем я зашел в свой менеджер пакетов и переустановил все пакеты с файлами в / lib , которые были указаны как устанавливаемые (см. Ответ Грэма, чтобы узнать, как получить такой список). Затем в качестве окончательной очистки я зашел и удалил все файлы / lib , скопированные из динамической установки, которых там не должно быть; т.е. не соответствовали файлам из установленного пакета.

1
27.01.2020, 20:52

Я думаю, что в большинстве случаев без функционирующего каталога / lib многие приложения, которые вам понадобятся для ремонта, больше не будут присутствовать. Я бы стиснул зубы и просто переустановил.


Если вы все равно хотите попробовать, вот что нужно сделать для дистрибутивов на основе RedHat.

Для дистрибутивов на основе Redhat, таких как CentOS / Fedora / RHEL, вы можете использовать RPM для проверки и исправления некоторых аспектов установленных пакетов.

проверить все pkgs

% rpm -qVav
.........    /usr/bin/rdesktop
.........    /usr/share/doc/rdesktop-1.6.0
.........  d /usr/share/doc/rdesktop-1.6.0/AUTHORS
.........  d /usr/share/doc/rdesktop-1.6.0/COPYING
.........  d /usr/share/doc/rdesktop-1.6.0/ChangeLog
.........  d /usr/share/doc/rdesktop-1.6.0/HACKING
.........  d /usr/share/doc/rdesktop-1.6.0/README
.........  d /usr/share/doc/rdesktop-1.6.0/TODO
.........  d /usr/share/doc/rdesktop-1.6.0/ipv6.txt
.........  d /usr/share/doc/rdesktop-1.6.0/keymap-names.txt
.........  d /usr/share/doc/rdesktop-1.6.0/keymapping.txt
...
...

проверить openssh

% rpm -qVv openssh
.........    /etc/ssh
..?......  c /etc/ssh/moduli
.........    /usr/bin/ssh-keygen
.........    /usr/libexec/openssh
.........    /usr/libexec/openssh/ssh-keysign
.........    /usr/share/doc/openssh-5.5p1
.........  d /usr/share/doc/openssh-5.5p1/CREDITS
.........  d /usr/share/doc/openssh-5.5p1/ChangeLog
.........  d /usr/share/doc/openssh-5.5p1/INSTALL
.........  d /usr/share/doc/openssh-5.5p1/LICENCE
.........  d /usr/share/doc/openssh-5.5p1/OVERVIEW
...
...

исправить права доступа и владельца

% rpm --setperms {packagename}
% rpm --setugids {packagename}

ПРИМЕЧАНИЕ: См. man rpm для получения дополнительных сведений о -V | --verify ] выход.

Подробнее см. В этой статье: http://www.cyberciti.biz/tips/reset-rhel-centos-fedora-package-file-permission.html .

1
27.01.2020, 20:52

В большинстве случаев это относительно легко исправить. Вы можете сгенерировать список всех установленных пакетов, используя каталог / lib с:

dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,

Если вы переустановите эти пакеты, это должно решить проблему:

apt-get --reinstall $(dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,)

Это, конечно, зависит от удаленного каталога, а не критичен для apt-get .Пакеты, необходимые для работы apt-get , придется устанавливать вручную, возможно, даже без dpkg . В этом случае пакет может быть извлечен на другой компьютер, а файлы скопированы на место, позже они будут переустановлены с помощью apt , так что это не должно вызвать никаких других проблем.

Глядя на мой собственный список пакетов, помещающих файлы в / lib , я вижу, что основные из них - это ядро ​​(все модули идут в / lib / modules ) и libc . Это два, которые почти наверняка придется переустановить, чтобы система стала загрузочной. Один из способов сделать это - установить из действующей системы на основе Debian. Если вы загрузите необходимые пакеты и смонтируете корень целевой системы, вы можете добавить параметр - root в dpkg для установки, например:

dpkg --root=/path/to/target/root -i package1.deb package2.deb ...

] - параметр root также может использоваться с первой командой dpkg , если необходимо. Конечно, если проявить достаточно терпения и навыков, можно будет отремонтировать онлайн. Если команда dpkg не работает, вы всегда можете попытаться найти зависимости пакетов непосредственно в / var / lib / dpkg / info и найти пакеты, помещающие файлы в / lib через файлы .list в / var / lib / dpkg / info .

Чтобы дать представление о том, чего можно достичь, вот блог о человеке, которому удалось восстановить работающую систему Gentoo, где все пакеты были удалены.Это делает чтение интересным, плюс некоторые из используемых методов (или предложенных в комментариях) могут быть применены в такой ситуации - http://fakeguido.blogspot.co.uk/2010/08/rescuing -hosed-system-using-only-bash.html

4
27.01.2020, 20:52

Теги

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