Я случайно заархивировал весь свой сервер

Хорошо, если кто-то хочет играть в бога и творить чудеса, я не в себе.

Итак, передо мной была поставлена ​​задача сделать скрипт, который бы находил файлы старше 6 месяцев, архивировал их, а затем удалял. На моем пути в создании сценария tihs я запустил это:

find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla

И это дало КАЖДОМУ ОДНОМУ ФАЙЛУ расширение.gz. Теперь я отменил это, как только заметил, но было слишком поздно. После завершения команды ни одна из моих команд bash не будет работать, потому что переменная $PATH очищается сама. Я перепробовал много вещей, прежде чем понял, в чем проблема.

Итак, после распаковки всего, что я до сих пор не могу загрузить. Мне удалось сделать это для спасения, после чего я следовал онлайн инструкциям для:

root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]

После того, как мой Linux частично загружается, но выдает следующие ошибки:

Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.

Я попытался восстановить файловую систему, я загрузился с 3-х разных LiveCD / Rescue-дисков, я выполнил boot-repair с 2-х разных дисков. Я заставил fscks...

У меня действительно нет идей, и мне нужно, чтобы этот сервер хотя бы загрузился, чтобы я мог восстановить свои базы данных SQL. Я отчаянно нуждаюсь в помощи, я даже заплачу, если понадобится.

Я весь день пролежал на форумах 3 дня, чтобы найти возможное решение, и я все еще нахожусь в том же положении... Помогите, пожалуйста?

3 ответа

Решение

Это будет зависеть от того, достаточно ли восстановлены файловые системы, чтобы вы могли смонтировать эти разделы с LiveCD. Пока не пытайтесь загрузить систему. Сначала смонтируйте разделы и разархивируйте все файлы.gz. Это даст вам рабочие копии файлов init и системы. Затем вы можете использовать grub для восстановления загрузочного сектора. Затем загрузитесь в однопользовательском режиме и снова откройте файловую систему fsck. Если это работает, у вас будет работающая система. У вас также будет куча разархивированных файлов (например, man-страниц), которые действительно должны быть заархивированы, но это лучше, чем система, которая не загружается.

Если вы не можете смонтировать разделы с LiveCD, вам, к сожалению, не повезло. Ничто не восстановит вашу систему в этот момент.

Первое, что я попробую, это запустить среду LiveCD и просто разархивировать все, надеясь, что это вернет систему в загрузочное состояние. Примечание: я был бы обеспокоен потенциальным повреждением данных, если исходный процесс gzip был прерван.

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

Общее мнение, что вам следует просто смонтировать диск в работающей системе и спасти ваши файлы, не является неправильным. Это разумная вещь. Но другой способ более веселый и очень познавательный. Я многому научился, борясь с выходом из беспорядочных ситуаций, когда другие люди просто сдались бы и переустанавливались с нуля. (Не на сервере, от которого зависят другие люди...)

Во всяком случае, пока у вас есть initramfs (initrd), который работает. Это хорошее начало. Но он не может завершить передачу обслуживания init, потому что init сейчас init.gz может быть? Чтобы добиться какого-либо прогресса, было бы полезно точно знать, какой дистрибутив Linux у вас есть, поэтому мы можем посмотреть, какие инструменты доступны в его initramfs для экстренного использования.

Представленные вами сообщения об ошибках выглядят так, будто они могли быть получены из initramfs Debian. Если это Debian, то вы должны были получить (initramfs) подсказка оболочки на следующей строке после последней ошибки. Если вы сделали, вы должны посмотреть, что происходит с этими неудачными креплениями. является /root/dev отсутствует? (/root где ваш обычный root fs должен быть смонтирован во время работы initramfs)

Если вы не получили приглашение оболочки, то что последовало после No init found. Try passing init= bootarg. будет интересно. Даже если это был всего лишь мигающий курсор, это подсказка. Если он кажется полностью замороженным, попробуйте получить некоторую информацию о том, какие процессы все еще существуют, используя magic sysrq или Ctrl+ScrollLock.

Debian initramfs также позволяет вам запрашивать оболочку в нескольких специальных ориентирах, добавляя break= параметр в командной строке ядра. Например, чтобы получить оболочку до Running /scripts/init-bottom линия, использовать break=bottom,

В сторону: я не знаю, как find команда могла бы сжать каждый файл... мне кажется правильным для выбора файлов от 180 до 400 дней.

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