Я имел два диска, установленные однажды, и имел корневую файловую систему второго диска, смонтированного в каталоге в /mnt
. Я был в том каталоге и пытался удалить var
но закончил тем, что ввел rm -rf /var
вместо этого. Некоторый инстинкт, казалось, ударил это, сказал var
должен предшествоваться с наклонной чертой!
Когда я понял то, что я сделал, я сразу поразил Ctrl-C, но было слишком поздно. Мой rpm
база данных давно оставила здание. Я потратил возрасты, возвращающие все к нормальному.
Теперь для болезненной части.
Я возвращаюсь в тот каталог в /mnt
возобновлять то, что я делал. Что я ввожу? Ну, позвольте нам просто сказать что тот инстинкт, втолкнутый снова.
По крайней мере, я смог восстановить систему, намного более быструю во второй раз ;)
Каждый раз, когда у меня есть хорошая ссылочная система и неправильно себя ведущая, я пытаюсь сравнить их с vimdiff. То, что я сравниваю, меняется в зависимости от проблемы, например.
1) При сравнении серверов на уровне пакета я создаю отсортированные списки пакетов на каждом сервере, отправляю результаты в файлы и разность их, например.
На server1:
dpkg --get-selections|sort > server1_packages
На server2:
dpkg --get-selections|sort > server2_packages
Скопируйте оба файла в ту же машину и разность (или vimdiff) их.
2) Составьте список рабочих сервисов как в примере 1
sysv-rc-conf --list|sort > server1_services
sysv-rc-conf --list|sort > server2_services
... и т.д., и vimdiff они.
3) При поиске и устранении неисправностей непоследовательных конфигураций с Apache, например, сделайте копии файлов конфигурации и vimdiff они, и т.д.
Большинство различий между двумя установками того же распределения будет в /etc
. Скопируйте содержание /etc
от одной машины до временного каталога на другой и выполненный
diff -ru /etc /copy/of/other/etc
Если Вы хотите сравнить машину со стандартной установкой, получить копию с новой стандартной установки (возможно, в виртуальной машине).
Если можно управлять машиной от запуска, удостоверьтесь, что установили etckeeper для хранения /etc
при управлении версиями. Затем Вы сможете видеть точно, что изменяется.
Конечно, будет много различий. Если у Вас еще нет идеи того, где посмотреть, это - неправильный подход для исследования конкретного различия в поведении. Например, скажем, команда adduser
ведет себя по-другому на двух машинах. Затем лучший подход должен посмотреть на какой adduser
делает; выполните его на обеих машинах и сравните. Если это имеет опцию сказать этому быть более подробным (adduser
не делает), используйте его. Более радикально запустите программу под strace, например.
strace -s9999 -efile adduser …
видеть что файлы adduser
доступы.
Для слушания назад более ранний вопрос изящный инструмент, который походит на хорошую идею мне, но я никогда не слышал о таком существующем звере, должен проверить вещи как тип файловой системы и размеры.
Реальный пример, который произошел со мной в 2002: два человека установили системы SuSE 7.3 на двух смежных серверах для установки в стойку. Они прикладывают много сил для получения пакетов точно то же на обоих серверах. Короткое время спустя у нас были проблемы с некоторым программным обеспечением в разработке. Это свелось к ext3 файловой системе на одном сервере, Reiserfs на другом. Плоскость "ls" на Reiserfs дает имена файлов в лексическом порядке, но не на ext3. Одна программа перестала работать на неисправных именах файлов.
Для файлов, пользователей, групп, пакетов, сервисы и т.д. я использовал http://www.scriptrock.com; это свободно для нескольких серверов и дает Вам хорошее визуальное сравнение различий между серверами.. очень удобный для дрейфа
/etc
при управлении версиями, чтобы помочь Вам отслеживать то, что продолжается.etckeeper
сделает это для Вас. – Faheem Mitha 21.05.2011, 15:57