Форум программистов, компьютерный форум, киберфорум
Debian, Kali Linux, Raspbian, Astra Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/41: Рейтинг темы: голосов - 41, средняя оценка - 4.78
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8

Восстановление системы

03.05.2014, 14:49. Показов 8476. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Есть хорошая мысль создать систему восстановления.
Есть мысли, как оно должно быть в итоге.
В общем и целом, нужно просто переустановить весь список установленных пакетов пользовательского окружения.
Но обо всём по порядку.
Предыстория: на днях подключил репозиторий убунты (хотел оттуда поставить пакет приложения), обновил систему и при этом потерял часть пакетов и сломал некоторые зависимости. В целом, система осталась работать нормально. Попортились некоторые графические пакеты.
И тогда мне пришла в голову мысль считать список установленных пакетов и сохранить их в файл, а потом, "в случае чего" просто переустановить их все оттуда.
Но т.к при этом могут быть подключены сторонние репозитории, отключены те, что по умолчанию (хотя, вообще, по умолчанию в качестве репозитория указан сидюк), нужно восстанавливать и список реп.
Отсюда имеем необходимость создания двух файлов в связке: список репозиториев и список установленных пакетов.
Эти два файла можно получить, скопировав текущий /etc/apt/sources.list и выполнив
Bash
1
dpkg --list
Собственно, нужно просто написать скриптик, который в один момент создаёт эти два файла, а потом, "в случае чего" устанавливает пакеты по этим конфигам.
Но это для начала.
Далее, хотелось бы его оформить в системное приложение, запускаемое и работающее из-под рута в init2 , то есть в однопользовательском режиме а-ля "Режим восстановления системы", запускаемый из второй строки (по умолчанию) в грубе.
А ещё бы лучше - создать и пунктик в меню"Система>Администрирование" во всех графических оболочках (для "особо продвинутых" поколений), чтобы выглядело аналогично виндовому "Восстановлению системы".

Есть мысль создать бинарник, запускающий и выполняющий все эти манипуляции, и прописать его в /sbin , т.к. в однопользовательском режиме приложения, находящиеся в /usr и поддиректориях попросту не работают.

Строго не судите, но если есть полезные мысли, то прошу вас ими мне помочь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2014, 14:49
Ответы с готовыми решениями:

Восстановление системы из бэкапа
Есть 2 машины: ноутбук samsung r530 и PC amd что-то там. На ноуте уже есть установленная и настроенная ос (debian 8.1), задача...

Восстановление файловое системы через RescueMode
Недавно напортачил с серверной машиной и теперь она не запускается, хостинг запустил мне RescueMode и сказал разбирайся сам, почитал...

Хочу отключить восстановление системных файлов (не восстановление системы)
у меня есть своя программа календаря... и я хочу поставить её вместо файла system32/rundll32.exe но проблема в том что винда отказывается...

19
Заблокирован
03.05.2014, 15:02
Не покатит так как версии итд меняются только в путь. А вот кэш всех скачанных пакетов для dpkg -i * вполне есть и им и рекомендуется пользоваться в таких случаях.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
03.05.2014, 15:55
имхо,
1. создаем список установленных пакетов
Bash
1
dpkg --list | awk '{print $2}' >> ~/my_packcge_list
2. создаем бакап настроек системы (например с помощью зипа)
Code
1
zip -r ~/etc_back /etc/*
впоследствии с этих двух файлов систему легко переустановить (естественно, если хоум живет на отдельном разделе)
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8
04.05.2014, 00:35  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
создаем список установленных пакетов

Bash
1
dpkg --list | awk '{print $2}' >> ~/my_packcge_list
Собственно, думаю создать при установке директорию в /var и складывать туда эти файлы, проименовав их датой/временем создания.
Как создавать файл с текущими датой/временем в качестве имени?
Цитата Сообщение от Dmitry Посмотреть сообщение
создаем бакап настроек системы
Чегой-то я не подумал об этом...
Наверное, тогда три файла, и в директории /var/recovery создавать уже не отдельные файлы, а сразу папку с датой/временем, а в ней уже - складывать по три файла: sources.list , ответ dpkg и файл настроек системы из /etc
Цитата Сообщение от Dmitry Посмотреть сообщение
если хоум живет на отдельном разделе
Это естесственно само собой разумеющееся!
Джентльмены, могу я вас попросить написать, хотя бы примерно, скрипт? Ибо не умею сам.

Добавлено через 2 минуты
Подразумевается случай с крахом не до основания методом rm -rf, а именно криворукое вмешательство в aptitude или apt-get

Добавлено через 7 минут
Цитата Сообщение от Dr_Quake Посмотреть сообщение
версии итд меняются
В принципе, я думаю, что это не имеет особого значения - по зависимостям установятся актуальные версии для данного ядра, либо, нужно сохранять и версии для каждого файла. а при восстановлении либо учитывать, либо игнорить и ставить ту, которая ставится.

Так ведь в зависимостях же прописаны и номера версий "от до" и apt по-любому будет ставить нужную, если указывать только имя пакета!
0
Заблокирован
04.05.2014, 00:41
Тогда проще 1 строку записать и не страдать фигнёй. У меня есть свои для кучи ОС в духе pkg install, aptitude install, yum install, yast install итд...
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
04.05.2014, 00:57
Цитата Сообщение от NeoMatrix Посмотреть сообщение
складывать по три файла: sources.list , ответ dpkg и файл настроек системы из /etc
первый-то зачем, он итак живет в папке /etc/apt, которая итак бакапится?
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8
04.05.2014, 11:41  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
первый-то зачем
В принципе - да, незачем. Тупанул я малость.
Но вот сейчас я не вижу необходимости в обязаловке сохранять все конфиги, да и места займут, наверное, много (при учёте, что бэкап будет не один, а периодически, то куда сохранять? Никакой винт не резиновый.)
Хотя, об этом стоит подумать.

Итак, общий алгоритм действий пока такой:
Сохранение:
При первом запуске (или при установке ещё) создаём свою папку в /var . Пусть она называется /var/Recovery
При запуске сохранения создаём подпапку с датой.временем. /var/Recovery/04.05.2014.11.20
В ней сохраним два файла sources.list и dpkg.list
Всё - сохранение выполнено! Сообщим об этом пользователю через echo.

Восстановление (Через echo честно предупредим, что восстанавливаем только набор пакетов приложений):
Копируем sorces.list из /var/Recovery/04.05.2014.11.20 в /etc/apt , наличествующий там - удаляем.
Вычитываем имена пакетов из dpkg.list и переустанавливаем их все по порядку (просто даём все их в качестве аргумента aptitude)
Да, сохраниться - процесс почти мгновенный, а восстанавливаться по такому алгоритму - о-очень долгий: пока aptitude выкачает
весь список пакетов системы из сети - вечность.

Вопрос тут в другом: если пакет был установлен (и версия не изменена), то его можно и не переустанавливать, наверное? Или таки стоит? И ещё: для ранее установленного пакета нужно reinstall, а для отсутствующего - просто install. Как "на лету" их различить?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
04.05.2014, 12:08
Цитата Сообщение от NeoMatrix Посмотреть сообщение
если пакет был установлен (и версия не изменена), то его можно и не переустанавливать,
когда-то мне надо было установить прогу которая требовала доустановки целой кучи пакетов. при первой установке я доставлял их по мере запроса вручную. потом выгрыз из лога их список и в дальнейшем ставил их скриптом. вот таким (абсолютно "без изысков"):
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
 
if [ -z "$1" ]
then
echo "Usage $0 file_with_list"
exit
fi
 
for pkg_name in $(cat $1)
do
sudo apt-get install -y $pkg_name
done
exit
при этом, если пакет уже установлен apt-get не переустанавливал его по новой, а просто сообщал, что пакет установлен, и переходил к следующему.
единственное, про "контроль версий" мне сказать вообще нечего, этим вопросом никогда не интересовался.
Цитата Сообщение от NeoMatrix Посмотреть сообщение
я не вижу необходимости в обязаловке сохранять все конфиги
заняло у меня примерно 32 Мб. на самом деле - это как раз "ленивый" способ, избавляющий от необходимости судорожно вспоминать - "а что ж я там нарулил?"..
1
Заблокирован
04.05.2014, 12:12
Мда, в общем вы ушли совсем в иную сторону, почему это неверно даже лень ещё раз повторять...
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
04.05.2014, 12:13
ЗЫ. и кстати, перед "изобретением собственного велосипеда" может имеет смысл изучить вопрос на тему "а что есть уже из числа готовых решений?"...
0
04.05.2014, 12:15

Не по теме:

Цитата Сообщение от Dr_Quake Посмотреть сообщение
почему это неверно даже лень ещё раз повторять
Dr_Quake, ну так и не повторяй, к чему эти пустые слова, ничего не объясняющие и только сотрясающие воздух?

0
04.05.2014, 12:17

Не по теме:

Ты нетрезв? Какой ещё воздух? Тут все пишут текстом, печатным...

0
04.05.2014, 12:22

Не по теме:

Dr_Quake, я не пью. З.Ы. Если хочешь сумничать - то хоть нормально это делай. Здесь, если уж на то дело пошло, не "пишут текстом" - как это вообще понимать? Печатают текст, можно сказать, набирают текст, но никак не "пишут", да еще и "текстом". Только все это не имеет никакого отношения - не "пиши текстом" бессмысленные сообщения, если не хочешь объяснять свою точку зрения.

..До чего скатился народ, уже даже не может понять аналогию.. Печально

0
Заблокирован
04.05.2014, 12:24

Не по теме:

KOPOJI, да, неудачно подобрал фразу. Точку я уже объяснил, зависимости косые, надо брать строго пакеты, либо класть на скачивание идти по списку того ЧТО НАДО, он очень небольшой, а всё остальное само по зависимостям вытянется.



Под убунту кстати уже есть нечто в духе искомого - Aptik.
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8
06.05.2014, 13:25  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
а что есть уже из числа готовых решений?
Гугл ничего особо путного в этом направлении не подсказал. Только кучу всяких вариантов "как создать свой live-cd" и "как сделать загрузочную флешку из своего дистрибутива".
То бишь, как я понял, ничего подобного штатно-предусмотренному средству в виндовсах "Восстановление системы" (восстановление списка установленных пакетов) в линуксах не предусмотрено.
Все варианты, которые я смог найти в интернетах подразумевают работу ручками-ручками в каждом случае необходимости отката назад - предлагается просто переустановить нужные пакеты и/или закатать их на флешку и оттуда бутиться и разбираться вручную в установленной на винте системе с многочисленными вариантами кастомизации.
Всё это, конечно, неплохо, но это не совсем (правильнее даже "совсем не") то, что мне нужно.
Я хочу сделать для пользователя простой в использовании инструмент для вероятного отката назад к прежней конфигурации, в случае, если пользователь, имея рутовые права, перемудрил с установщиками пакетов и/или репозиториями.

Итак, используем первый скрипт Dmitry:
Цитата Сообщение от Dmitry Посмотреть сообщение
Bash
1
zip -r /var/recovery/Date.Time/etc_back /etc/*
и создадим архив настроек
Далее, создадим там же файл списка пакетов
Цитата Сообщение от Dmitry Посмотреть сообщение
dpkg --list | awk '{print $2}' >> /var/recovery/Date.Time/dpkg.list
Когда настанет нужное время, мы распакуем наш сохранённый архив обратно в /etc
Bash
1
2
3
rm -rf /etc
mkdir /etc
unzip /var/recovery/Date.Time/etc_back /etc
И будем устанавливать пакеты по списку из /var/recovery/Date.Time/dpkg.list
Цитата Сообщение от Dmitry Посмотреть сообщение
Bash
1
2
3
4
5
6
7
8
9
10
11
if [ -z "$1" ] 
then 
echo "Usage $0 /var/recovery/Date.Time/dpkg.list" 
exit 
fi 
 
for pkg_name in $(cat $1) 
do 
sudo apt-get install -y $pkg_name 
done 
exit
Добавлено через 2 минуты
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Под убунту кстати уже есть нечто в духе искомого - Aptik.
1 Это под убунту (в олдстейбле не установится)
2 Почему бы мне не сварганить свой велосипед?
Хотя да, огромное вам спасибо - это как раз по теме.

Добавлено через 1 минуту
Цитата Сообщение от Dr_Quake Посмотреть сообщение
идти по списку того ЧТО НАДО, он очень небольшой, а всё остальное само по зависимостям вытянется.
Да, рациональная мысль. Только как изо всего списка выбрать именно одни ключевые?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
06.05.2014, 14:38
Цитата Сообщение от NeoMatrix Посмотреть сообщение
  1. Когда настанет нужное время, мы распакуем наш сохранённый архив обратно в /etc
  2. И будем устанавливать пакеты по списку из /var/recovery/Date.Time/dpkg.list
  3. Только как изо всего списка выбрать именно одни ключевые?
во первых, я бы поменял местами 1 и 2. и вот почему - установка пакетов возжелает установить и свои конфиги. и в лучшем случае установщик спросит - оставить пользовательский или установить исходный вариант конфига. а в худшем - тупо перепишет дефолтным поверху...

а по поводу 3 - повторюсь: инстлятор пакетов (тот же dpkg), найдя уже установленный пакет, просто сообщит, что тот уже установлен. т.е., допустим, имевшийся в списке /var/recovery/Date.Time/dpkg.list пакет ААА и бывший в нем самым первым, потребовал при установке, чтобы также был установлен пакет ХХХ, бывший в этом списке самым последним и при этом являвшийся зависимостью для пакета ААА. Инсталятор установит сразу и ААА и ХХХ. А когда он дойдет до конца списка, вычитает из него снова пакет ХХХ, то инсталятор ткнется и сообщит, что пакет ХХХ уже установлен....

Добавлено через 1 минуту
Цитата Сообщение от NeoMatrix Посмотреть сообщение
ничего особо путного в этом направлении не подсказал
ну, "совсем быстро" можно и clonezilla
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8
06.05.2014, 18:10  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
я бы поменял местами 1 и 2.
ОК!
Цитата Сообщение от Dmitry Посмотреть сообщение
инсталлятор ткнется и сообщит, что пакет ХХХ уже установлен
Лишь бы не останавливался на этом, а продолжал по списку.

Добавлено через 7 минут
И да, если оно так будет - замечательно: так сократится время на восстановление.
Тут меня беспокоит несколько обратный вопрос: если пакет FFF был установлен по зависимости от DDD в прежней версии, что, собственно, и сломало систему, то таким методом доустановятся/установятся все остальные: AAA, BBB, CCC, EEE, GGG ...etc., а именно вот эти ненужные, если их только не выкинет конфликтами с NNN и KKK, останутся?
То есть, как гарантированно удалить ненужные, которых нет в бэкап-списке?

Добавлено через 5 минут
То есть, наверное, есть смысл взять dpkg.list.now, сравнить его с dpkj.list.back, совпадения вычесть, а разницу - удалить и доустановить соответственно? Так будет и быстрее и точнее.
0
Заблокирован
06.05.2014, 18:23
<command> xorg wget wput x11vnc tightvnc icewm mc rsync echoping mping opera opera-linuxplugins wine wine-mono fping iconv mosh-term trafshow rar zip 3proxy chntpw webmin clamav istgt dd_rescue detach screen e2fsprogs subversion git termatrix ezjail elinks centerim weechat xorg icewm

Ну и всё собственно. Не надо изобретать велосипед, просто надо знать чего тебе надо. Названия итд отличаются от дистрибутива к дистрибутиву, но несильно.
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8
06.05.2014, 20:08  [ТС]
Dr_Quake, поймите меня правильно: мне не лень и сто раз запороть систему и по-новой установить и настроить.
Я не о своих проблемах в данном случае думаю, а о том, как сделать удобный и лёгкий тул для новичков в администрировании линуксов.

Не по теме:

Вы сами можете видеть, что я много ли мало, но таки понимаю уже что к чему и как этим пользоваться. Да, мне хотелось бы понимать больше, работать успешнее и быстрее, но, я думаю, что это ко мне придёт со временем. А вот тем, кто только начинает свой путь на этой ниве и стремится, как я несколько лет назад, объять необъятное, уже будет немного легче. Пусть они ломают ноги и приобретают свой опыт уже немного дальше на том проторённом мной пути и пройдут по моим стопам хоть чуть-чуть безболезненней и быстрее, чем я.

0
Заблокирован
06.05.2014, 20:18
А я про что пишу? КАЖДЫЙ пункт надо понимать зачем и почему тебе нужен, можешь с пояснениями. Обычно список дополняется <removecommand> список что чистить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2014, 20:18
Помогаю со студенческими работами здесь

Windows 7 (Восстановление системы непредвиденная ошибка при восстановлении системы 0x80071a91)
Приветствую. Попробую в двух словах описать ситуацию... Windows 7 sp1, ноутбуку как и установленному виндовсу лет 6. После включения...

Проходит восстановление системы 100% ,далее на обновлении системы процесс зависает на 99%
ноутбук Acer. Восстанавливаю систему с помощью Acer eRecovery Проходит восстановление системы 100%,далее на обновлении системы процесс...

Восстановление ошибок, восстановление системы
Привет. Выключил ноут, включаю и... синий экран, внизу пишет &quot;initializing disk for crash dump&quot; чтот такое, далее восстановление после...

Восстановление системы
Добрый день. На днях полетела система с BSOD'ом 0х00000074. В сети пишут про повреждение системы. Так вот моя Windows 7.Домашняя...

Восстановление системы
Здравствуйте, в наличии acer extensa 5620 и на нем переустановили винду.. Начало жутко тормозить и вот решил все таки вернутся к заводской...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru