“/ Bin” i yeni sildim. Kurtarmanın en iyi yolu nedir?


10

Sadece koştum (bilerek değil!) rm -rf /bin.

Bilgisayarı başlattım ve ondan kurtulmak için Finnix kullanıyorum. Sürücüyü monte etmeyi başardım ve evet, tüm /binklasörün silindiğini onayladım .

İşletim sistemini yeniden yüklemeden bu durumdan kurtulmak mümkün müdür?

Aynı işletim sistemi ve mimariye (Ubuntu Server 11.10 alfa sürümü, x86) sahip bir VM kurabileceğimi ve sunucuya yüklediğim tüm paketleri yükleyebileceğimi, sonra sadece /binklasörü kopyalayabileceğimi düşünüyorum.

Bu işe yarayacak mı? Sadece baştan başlasam iyi olur mu?

Yanıtlar:


15

Genel olarak, bir yeniden yüklemeye yaslanırım (kesinlikle sahip olmanız gereken yedeklerden). Ama kibirli hissediyorum, bu yüzden başka bir yol (sisteminizin altına monte edildiği varsayılarak /target):

  1. İçinde dosyaları bulunan tüm yüklü paketlerin bir listesini alın /bin:

    grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
    

    (Debian Squeeze sistemimde, hepsi 34 çekirdek olan toplam 34 paket)

  2. Bu paketlerin her birini indirin (Ben bu bit komut dosyası için rahatsız olamazdı, bu yüzden sadece Packages.ubuntu.com hit ve altında bir yere indirmek /target). Şanslıysanız, bazı paketler hala etrafta yüzüyor olabilir /target/var/cache/apt/archives.

  3. Her paket için çalıştırın /target/usr/bin/dpkg -x <package> /target. dpkgBu günlerde tamamen bağımsız olduğundan eminim ve /binkendi içinde hiçbir şeye seslenmemeliyim .

Sistemi tekrar ayağa kaldırdıktan sonra, emin olmanız ve çalıştırmanız gerekir apt-get --reinstall install <all the packages from step 1>, çünkü (Sysadmin Cat'in üretim sistemlerinde hayır olmadığını söylediği bir ön sürüm çalıştırdığınızdan) paketlerin sürümleri yeni çıkardığınızdan daha önce sistemdekilerden farklı olabilirsiniz ve sistemin ne olduğunu tam olarak bildiğinden emin olmak istersiniz.


Güzel cevap, ama bir şey mi eksik? dpkg-query -S /binAynı şeyi stanzadan da yapmaz grep .. | sedmıydın? Listenin satır başına bir paket adı listelemesi için temizlenmesi gerekiyorsa, dpkg-query -S /bin | sed 's/\,\ /\n/g'çalışır (son satırda ekstra: / bin olmasına rağmen).
Janne Pikkarainen

1
Evet, olurdu - çalıştırılan her şeyin bir şeye ihtiyacı olması durumunda hedef sistemde çalıştırılan malzeme miktarını en aza indirmeye çalışıyordum /binve kurtarma sisteminde Debian'a özgü hiçbir şeye güvenmek istemedim. gelecekteki bulucular için mümkün olduğunca genel.
womble

Bu sadece gerekli sistem yardımcı programlarının bir listesi gibi görünüyor - dosyaları olan başka paketler de yok /binmu? Sistemimdeki her paketi mi yoksa yalnızca listenin sonucu olarak oluşturulan paketleri mi yeniden yüklemeliyim? (Ayrıca: teşekkürler, seni seviyorum!)
Tom Marthenal

1
Genellikle, yalnızca gerekli paketlerin içinde dosyalar olacaktır /bin- çoğu paket tüm verilerini altına koymalıdır /usr. Benim sistemimde, sadece birkaç gerekli olmayan paket (ör. zsh) "İçinde şeyler var /bin" listesinde. Upvotes bu arada aşkı göstermek için harika bir yoldur ...
womble

1
Talimatlarınıza uydum ve mükemmel çalıştılar - sunucum tekrar çalışıyor ve çalışıyor. Yardım için bir ton teşekkürler!
Tom Marthenal

5

Stratejiniz işe yarayabilse de (bunun için iyi şanslar vardır, bin dizinini geri kopyaladığınızda, sisteminizdeki tüm paketlerin apt-get yeniden yüklemesini yaparsanız), gelecekte sorunlara neden olabilir. dengesiz bir sunucu.

Bu bana olsaydı, günlük yedeklemeden yeniden yükler ve geri yüklerdim. Günlük bir yedeğiniz var - olağanüstü durum kurtarma planı - değil mi?

Olağanüstü durum kurtarma planınız yoksa, korumak istediğiniz tüm yapılandırma dosyalarını ve verileri yedeklemenizi ve yeniden yüklemeyle devam etmenizi öneririm. Bu şekilde, tekrar kararlı bir sunucuyla biteceğinden emin olacaksınız.


1
/ bin klasörünü nasıl kurtaracağını buraya gönderdiğinden beri bir yedeği yok.
Goez

Ne yazık ki, günlük yedeklemem yok. O zaman yazdığım bash betiği, ironik bir şekilde, günlük bir yedekleme betiğiydi. Yeniden yükleyeceğim gibi görünüyor - tavsiye için teşekkürler.
Tom Marthenal

Yeniden yüklemeye gerek yok; cevabımı gör.
womble

Dosya sistemi anlık görüntüleri böyle şeylerden kurtulmak için son derece yararlıdır. Ne yazık ki ext2 / 3/4 dosya sistemleri onları uygulamıyor ve LVM ile yapmanın büyük bir performans cezası var. FreeBSD kutumda yanlışlıkla / bin'i silersem, daha önceki bir anlık görüntüyü bağlarım ve dosyaları dosya sisteminin canlı sürümüne geri kopyalarım. OS X'in sözde buna da sahip olduğu söylenir (buna "zaman makinesi" denir).
ek bileşeni

3

Bir VM oluşturmayı ve ardından içeriğini /binhasarlı makinenize kopyalamayı denerdim . Bu seni harekete geçirir. O zaman koş

dpkg --get-selections  | awk '{print $1}' | xargs -l1 aptitude reinstall

sisteminizdeki tüm paketleri yeniden yüklemeniz gerekir.


1

Makineye erişiminiz varsa, en kolay yol dosya sistemini bağlamak, tüm verilerinizin bir yedeğini almaktır (önlem olarak).

Sonra ubuntu'yu normal bir kurulum gibi yeniden yükleyebilirsiniz; prensip olarak tüm verileriniz (home dir, vs ve var) hala orada olmalıdır.

Tüm paketleri yeniden yüklemenin bir yolu vardır, böylece / bin yeniden doldurulur, ancak bu oldukça karmaşıktır.


0

Dosyalar kayboldu. Dosyaları "silmeyi geri almayı" deneyebilirsiniz - ben tavsiye etmem.

Not: Ubuntu'yu çalıştırmıyorum (ve bir süredir Debian dağıtımlarını kullanmadım). Ancak, benzer senaryoyu izleyerek geçmişte çeşitli dağıtım kurtarma çalışmaları yaptım.

En iyi hareket tarzınız:

  • liveCD'den önyükleme
  • (demek liveCD sistem somplace monte kullanarak /mnt/mint)
  • yüklü tüm paketleri dpkg sorgusu kullanarak :
# dpkg --admindir = / mnt / nane / var / lib / dpkg -l
  • apt-get kullanarak tüm bu paketleri / mnt / mint hedefinize kurun:
# apt-get -o RootDir = / mnt / nane .... 
  • (alternatif # 1) Deboostrap yapmanız gerekebilir /mnt/mint- emin değilim
  • (alternatif # 2) /binLiveCD içeriğini üzerine kopyalayabilirsiniz , /mnt/mint/binancak nane için liveCD'nin konuları zorlaştırabilecek meşgul kutusu kullanıp kullanmadığını bilmiyorum - bu durumda alternatif # 1 daha güvenli görünüyor.

Genellikle bu, sahip olduğunuz her şeyin dosyalarınızı "kaba-yeniden yükleme" ile döndürmelidir. / Bin içindeki ikili dosyaları bırakan tüm paketler için biraz daha "akıllı" numaralar ve sorgulamalar yapabilirsiniz

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.