Tüm sunucumu yanlışlıkla sıkıştırdım


10

Tamam, eğer kimse tanrı oynamak ve mucizeler çalışmak isterse aşağıdayım.

Yani, 6 aydan daha eski dosyaları bulan bir komut dosyası yapma görevi verildi, onları sıkıştırdı ve sonra sildi. Tihs betiği yapma yolumda ben bu koştu:

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

Ve bu HER TEK DOSYA bir .gz uzantısı verdi. Şimdi en kısa sürede fark ettim ama biraz geç oldu. Komut tamamlandığında bash komutlarımın hiçbiri işe yaramaz çünkü $ PATH değişkeni kendisini boşaltır. Sorunun ne olduğunu anlamadan önce birçok şeyi denedim.

Öyleyse hala önyükleyemediğim her şeyi açığa çıkarmak Çevrimiçi talimatları izlediğimden sonra kurtarmayı başarmayı başardım:

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

Sonra benim linux kısmen önyükleme yapar ama bana aşağıdaki hataları verir:

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.

Dosya sistemini onarmayı denedim, 3 farklı LiveCD / Kurtarma diskinden önyükledim, 2 farklı dicsc'ten önyükleme onarımı yaptım. Parmakları zorladım ...

Gerçekten fikir dışında ve SQL veritabanlarımı kurtarabilirsiniz böylece en azından önyükleme için bu sunucu almak gerekiyor. Yardım için çaresizim, gerekirse ödeyeceğim.

Olası bir çözüm bulmak için tüm gün boyunca 3 gün boyunca forumları izliyorum ve hala aynı noktadayım ... Yardım edin?


3
onlar mysql db's eğer mutlaka önyükleme gerekmez; bu durumda sürücüyü köle olarak bağlamaya ve / var / lib / mysql dizinine
kopyalamaya çalışacağım

8
Yeni depolama cihazlarına temiz kurulum. Eski sürücüyü takın, verileri gerektiği gibi aktarın. Tamir etmenin çabaya değmeyeceğine bahse girerim.
Zoredache

7
Bu, yedeklemeden geri yüklediğiniz noktadır. Ve bir dahaki sefere root kullanıcısı olarak ayrıcalıklı olmayan eylemler gerçekleştirmemeyi unutmayın.
Magellan

1
because of version differences,tam olarak aynı sürümle yeniden yükleyin. we have corruption issues,verileriniz bozulmuş olabilir. Sistemi önyüklenebilir olacak şekilde onarmak, verilerin çöpe atılması durumunda size yardımcı olmaz. Veritabanı kullanılırken gzip komutunuz veritabanı dosyalarınızı sıkıştırırsa, bozuk olması kaçınılmaz görünmektedir.
Zoredache

5
Bu yazılımları çalıştırırken DB yazılımınız çalışıyorsa, DB'leri kurtaramayabilirsiniz. Gzip dosyayı mutlu bir şekilde sıkıştırdı, sonra bağlantısını kaldırdı. Ancak DB yazılımınız hala dosyayı açmıştı ve dosyada değişiklikler yapıyordu. Durur durmaz, dosya kaldırıldı.
devrildi vagon

Yanıtlar:


8

Bu, dosya sistemlerinin bu bölümleri bir LiveCD'den bağlayabilmeniz için yeterince onarılıp onarılmadığına bağlı olacaktır. Henüz sistemi önyüklemeye çalışmakla uğraşmayın. İlk olarak, bölümleri bağlayın ve tüm .gz dosyalarını açın. Bu, init ve sistem ikili dosyalarının çalışma kopyalarını verecektir. Ardından önyükleme sektörünü onarmak için grub'u kullanabilirsiniz. Ardından tek kullanıcı moduna önyükleme yapın ve dosya sistemini tekrar fsckleyin. Bu işe yararsa, çalışan bir sisteminiz olacaktır. Ayrıca, gerçekten sıkıştırılması gereken bir sürü sıkıştırılmamış dosyaya sahip olacaksınız (man sayfaları gibi), ancak önyüklenemeyen bir sisteme sahip olmaktan daha iyidir.

Bölümleri bir LiveCD'den bağlayamıyorsanız, maalesef şansınız kalmaz. Hiçbir şey bu noktada sisteminizi kurtaramaz.


1
Bu aslında bir cazibe gibi çalıştı ... Bunun için yeterince teşekkür edemem! MySQL önyükleme olmaz ama henüz --force fsck yapmadım, umarım düzeltir! TEŞEKKÜRLER
Dexirian

1
Muhteşem. Yardımcı oldu sevindim.
Michael Martinez

9

Denediğim ilk şey, bir LiveCD ortamı çalıştırmak ve sistemin önyüklenebilir bir duruma dönmesini umarak her şeyi çözmeyi denemek. Not: Orijinal gzip işlemi yarıda kesilirse, olası veri bozulması konusunda endişe duyarım.

Aksi takdirde DB'yi başkalarının önerdiği gibi yeni bir sisteme geçirmeye çalışacağım, ancak karşılaştığınız gibi, emek yoğun bağımlılık ve bireysel olarak çözülmesi gereken yapılandırma sorunları olabilir.


Kısa soru: Eski SQL veritabanı sunucusundan emin değiliz ve yeni sunucu farklı bir Linux Distro kullanıyor. Yeni sunucu CentOS ile WHM çalıştırıyor ve eski sunucu Debian / Unbuntu'ydu. Benim sorum şu ki, SQL veritabanlarımı bozulmadan ve etkili bir şekilde nasıl taşıyabilirim?
Dexirian

6

Buradaki genel fikir birliği, diski çalışan bir sisteme monte etmeniz ve dosyalarınızı kurtarmanız gerektiği yanlış değildir. Yapılması mantıklı bir şey. Ama diğer yol daha eğlenceli ve çok eğitici. Diğer insanların yeni vazgeçtiği ve sıfırdan yeniden kurdukları dağınık durumlardan çıkarken çok şey öğrendim. (Diğer insanların bağlı olduğu bir sunucuda değil ...)

Her neyse, şimdiye kadar çalışan bir initramfs (initrd) var. Bu iyi bir başlangıç. Ama init için elden geleni tamamlayamıyor çünkü init şimdi olabilir init.gzmi? Herhangi bir ilerleme sağlamak için, tam olarak hangi Linux dağıtımına sahip olduğunuzu bilmenize yardımcı olur, böylece acil kullanım için initramf'larında hangi araçların mevcut olduğunu arayabiliriz.

Sunduğunuz hata mesajları Debian'ın initramfs'ından gelmiş gibi görünebilir. Debian ise, (initramfs)son hatadan sonraki satırda bir kabuk istemi almış olmanız gerekir . Eğer yaptıysanız, bu başarısız bağlarla neler olup bittiğine bakmalısınız. edilir /root/devkayıp mı? ( /rootinitramflerin çalışması sırasında normal kök f'lerinizin monte edilmesi gereken yerdir)

Eğer kabuk istemini almadıysanız, sonra gelen No init found. Try passing init= bootarg.ilginç olacaktır. Yanıp sönen bir imleçten başka bir şey olmasa bile, bu bir ipucu. Tamamen donmuş gibi görünüyorsa, sihirli sysrq veya Ctrl + ScrollLock kullanarak hala hangi işlemlerin çevresinde olduğu hakkında bilgi almaya çalışın.

Debian initramfs break=, çekirdek komut satırına bir parametre ekleyerek birkaç özel yer işaretinde kabuk istemenizi de sağlar . Örneğin, Running /scripts/init-bottomsatırdan önce bir kabuk almak için kullanın break=bottom.

Bir kenara: findKomutun her dosyayı nasıl sıkıştırdığını bilmiyorum ... 180 ila 400 günlük dosyaları seçmek için bana doğru görünüyor.


İ / root altında bir ls yaptığımda hiçbir şey bulunamadı. Yani ben fs montaj önyükleme tamam değil alabilir miyim? Nerede değiştirebilirim?
Dexirian

1
Eğer (eğer kullanım zorundaydın bir kabuk istemi aldın bu yüzden @Dexirian break=bottom?) ... evet, öyle monte çalışıyor zaman /root/devve /root/procve /root/sys, /rootgerçek kök dosya sistemi olmalıdır. Bağlanamama konusunda daha önce bir hata mesajı olmuş olmalıdır. root=Çekirdek komut satırına bir parametre eklediniz mi ? Hafızam bu noktada biraz bulanık ama bence root (hd0,0)sadece gruba destek dosyalarını nerede bulacağını söylüyor ve hala çekirdeğe kökün nerede olduğunu ayrı ayrı anlatmanız gerekiyor.

Evet root =, kernel = initrd = ve setup = kullandım, break = bottom kullanmak zorunda kalmadım. Ve gerçekten hızlı bir şekilde kaydırdığından, daha önce başarısız bir montaj mesajı
görmedim

@Dexirian Konsol geri kaydırma kullanılabilir mi? + PgUp Shift. Ve o fromt monte edebilirsiniz (initramfs) gibi istemi şey mount -r /dev/sda1 /root? cat /proc/partitionshangi disklerin kullanılabilir olduğunu görmek için.

1
Sistem yönetimi dünyasına hoş geldiniz.
Michael Martinez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.