Saya secara tidak sengaja membuka seluruh server saya

10

Baiklah kalau ada yang mau bermain dewa dan melakukan mukjizat aku turun.

Jadi, saya diberi tugas membuat skrip yang menemukan file yang lebih tua dari 6 bulan, zip mereka dan kemudian menghapusnya. Dalam perjalanan saya membuat skrip tihs saya menjalankan ini:

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

Dan itu memberikan ekstensi .gz SETIAP SATU TUNGGAL. Sekarang saya membuka kancingnya begitu saya perhatikan tetapi sudah agak terlambat. Setelah menyelesaikan perintah, tidak ada perintah bash saya akan bekerja karena variabel $ PATH dikosongkan sendiri. Saya mencoba banyak hal sebelum menyadari apa masalahnya.

Jadi ater membuka ritsleting semua yang saya masih belum bisa boot. Saya telah berhasil membuatnya menyelamatkan, setelah saya mengikuti instruksi online untuk:

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

Setelah itu linux saya melakukan boot sebagian tetapi memberi saya kesalahan berikut:

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.

Saya sudah mencoba memperbaiki filesystem, saya sudah boot dari 3 LiveCD / Rescue disk yang berbeda, saya menjalankan boot-perbaikan dari 2 dicsc yang berbeda. Saya memang memaksa fscks ...

Saya benar-benar kehabisan ide dan saya PERLU untuk mendapatkan server ini untuk setidaknya boot sehingga saya dapat memulihkan database SQL saya. Saya sangat membutuhkan bantuan, saya bahkan akan membayar jika perlu.

Saya telah mengintai forum selama 3 hari berturut-turut sepanjang hari untuk menemukan solusi yang mungkin dan saya masih pada titik yang sama ... Tolong tolong?

Dexirian
sumber
3
jika itu mysql db, Anda tidak perlu boot; dalam hal ini saya akan mencoba untuk me-mount drive sebagai slave dan salin ke direktori / var / lib / mysql
user16081-JoeT
8
Bersihkan pemasangan di perangkat penyimpanan baru. Pasang drive lama, transfer data sesuai kebutuhan. Saya berani bertaruh bahwa perbaikan tidak akan sepadan dengan usaha.
Zoredache
7
Ini adalah titik di mana Anda memulihkan dari cadangan. Dan ingatlah untuk tidak berlarian melakukan tindakan tidak istimewa sebagai pengguna root di lain waktu.
Magellan
1
because of version differences,instal ulang dengan versi yang sama persis. we have corruption issues,data Anda mungkin rusak. Memperbaiki sistem sehingga dapat di-boot, tidak akan membantu Anda jika data telah dibuang. Jika perintah gzip Anda mengompresi file database Anda saat database sedang digunakan tampaknya tidak terhindarkan korup.
Zoredache
5
Jika perangkat lunak DB Anda berjalan saat Anda menjalankan perintah itu, Anda mungkin tidak dapat memulihkan DB. Gzip akan dengan senang hati membuka zip file, lalu memutuskan tautannya. Tetapi perangkat lunak DB Anda masih memiliki file terbuka dan itu melakukan perubahan untuk itu. Begitu berhenti, file itu kemudian dihapus.
toppledwagon

Jawaban:

8

Ini akan tergantung pada apakah sistem file diperbaiki cukup bagi Anda untuk dapat me-mount partisi tersebut dari LiveCD. Jangan repot-repot mencoba untuk mem-boot sistem. Pertama, pasang partisi dan unzip semua file .gz. Ini akan memberi Anda copy binari init dan sistem yang berfungsi. Kemudian Anda dapat menggunakan grub untuk memperbaiki sektor boot. Kemudian boot ke mode pengguna tunggal dan fsck sistem file lagi. Jika berhasil, Anda akan memiliki sistem yang sedang berjalan. Anda juga akan memiliki banyak file yang tidak di-zip (seperti halaman manual) yang benar-benar harus di-zip, tetapi lebih baik daripada memiliki sistem yang tidak bisa di-boot.

Jika Anda tidak dapat memasang partisi dari LiveCD, sayangnya Anda kurang beruntung. Tidak ada yang akan memulihkan sistem Anda pada saat itu.

Michael Martinez
sumber
1
Ini benar-benar berfungsi seperti pesona ... saya tidak bisa cukup berterima kasih untuk ini! MySQL tidak mau boot tetapi saya belum melakukan --force fsck, semoga akan memperbaikinya! TERIMA KASIH
Dexirian
1
Luar biasa. Senang itu membantu.
Michael Martinez
9

Hal pertama yang saya coba adalah menjalankan lingkungan LiveCD dan hanya mencoba untuk ungzip semuanya, berharap itu akan mengembalikan sistem ke keadaan bootable. Catatan: Saya akan khawatir tentang potensi korupsi data jika proses gzip asli terputus.

Kalau tidak, saya akan mencoba untuk memigrasi DB ke sistem baru seperti yang disarankan orang lain, tetapi seperti yang Anda temui mungkin ada masalah ketergantungan tenaga kerja dan konfigurasi yang perlu diselesaikan secara individual.

Bob Barker
sumber
Pertanyaan cepat: Kami tidak yakin dengan server database SQL lama, dan server yang lebih baru menggunakan Linux Distro yang berbeda. Server yang lebih baru menjalankan CentOS dengan WHM, dan server lama adalah Debian / Unbuntu. Jadi pertanyaan saya adalah, bagaimana saya bisa secara efektif memigrasi database SQL saya tanpa korupsi dan yang lainnya?
Dexirian
6

Konsensus umum di sini, bahwa Anda hanya perlu me-mount disk dalam sistem kerja dan menyelamatkan file Anda, tidak salah. Itu hal yang masuk akal untuk dilakukan. Tapi cara lain lebih menyenangkan, dan sangat mendidik. Saya telah belajar banyak saat berjuang keluar dari situasi berantakan di mana orang lain baru saja menyerah dan diinstal ulang dari awal. (Bukan pada server yang bergantung pada orang lain ...)

Bagaimanapun, sejauh ini Anda memiliki initramf (initrd) yang berjalan. Itu awal yang bagus. Tetapi tidak dapat menyelesaikan handoff untuk init karena init sekarang init.gzmungkin? Untuk membuat kemajuan apa pun, akan sangat membantu untuk mengetahui dengan tepat distribusi Linux apa yang Anda miliki, sehingga kami dapat mencari alat apa saja yang tersedia di initramfsnya untuk penggunaan darurat.

Pesan kesalahan yang Anda sajikan sepertinya berasal dari initramfs Debian. Jika itu adalah Debian, maka Anda seharusnya mendapatkan (initramfs)prompt shell di baris berikutnya setelah kesalahan terakhir. Jika Anda melakukannya, Anda harus melihat apa yang terjadi dengan mount yang gagal itu. adalah /root/devhilang? ( /rootDi sinilah fs root normal Anda harus dipasang selama menjalankan initramfs)

Jika Anda tidak mendapatkan prompt shell, maka apa yang terjadi selanjutnya No init found. Try passing init= bootarg.akan menarik. Bahkan jika itu hanyalah kursor yang berkedip, itu adalah petunjuk. Jika tampaknya benar-benar beku, cobalah untuk mendapatkan beberapa informasi tentang proses apa yang masih ada menggunakan sysrq ajaib atau Ctrl + ScrollLock.

Initramfs Debian juga memungkinkan Anda meminta shell di beberapa landmark khusus dengan menambahkan break=parameter ke baris perintah kernel. Misalnya, untuk mendapatkan shell sebelum Running /scripts/init-bottombaris, gunakan break=bottom.

Selain itu: Saya tidak tahu bagaimana findperintah bisa melakukan gzip pada setiap file ... kelihatannya benar bagi saya untuk memilih file yang berumur antara 180 dan 400 hari.


sumber
Ketika saya melakukan ls di bawah / root tidak ada yang ditemukan. Jadi saya bisa mengambil fs mounting tidak apa-apa saat boot? Di mana saya bisa mengubahnya?
Dexirian
1
@Dexirian jadi Anda mendapatkan prompt shell (apakah Anda harus menggunakan break=bottom?) ... ya, pada saat itu sedang mencoba untuk me /root/dev- mount /root/procdan /root/sys, dan /rootseharusnya menjadi filesystem root yang sebenarnya. Pasti ada pesan kesalahan sebelumnya, tentang gagal me-mount itu. Apakah Anda memasukkan root=parameter di baris perintah kernel? Memori saya sedikit kabur tentang hal ini, tetapi saya pikir root (hd0,0)grub hanya memberitahu di mana menemukan file-file pendukungnya, dan Anda masih perlu memberi tahu kernel secara terpisah di mana root berada.
Ya saya memang menggunakan root =, kernel = initrd =, dan setup =, saya tidak harus menggunakan break = bottom. Dan saya tidak menemukan pesan mount gagal sebelumnya, karena itu menggulir sangat cepat
Dexirian
@Diriirian Apakah scrollback konsol tersedia? Shift + PgUp. Dan bisakah kamu memasangnya dari yang dia minta (initramfs) , sesuatu seperti mount -r /dev/sda1 /root? cat /proc/partitionsuntuk melihat disk apa yang tersedia.
1
Selamat datang di dunia administrasi sistem.
Michael Martinez