「/ bin」を削除しました。回復する最良の方法は何ですか?


10

私は(ない目的で!)走りましたrm -rf /bin

コンピューターを起動し、Finnixを使用してコンピューターから回復しようとしています。ドライブのマウントに成功し、/binフォルダ全体が削除されていることを確認しました。

OSを再インストールせずにこれから回復することは可能ですか?

同じOSとアーキテクチャ(Ubuntu Server 11.10 alphaリリース、x86)でVMをセットアップし、サーバーにインストールしたすべてのパッケージをインストールして、/binフォルダーをコピーできると考えています。

これは機能しますか?やり直したほうがいいですか?

回答:


15

一般的に、私は再インストールに頼ります(絶対に持っているはずのバックアップから)。しかし、私はハックを感じているので、ここに別の方法があります(システムがの​​下にマウントされていると仮定した場合/target):

  1. 次の場所にファイルがある、インストールされているすべてのパッケージのリストを取得します/bin

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

    (私のDebian Squeezeシステムでは、合計34個のパッケージがあり、そのほとんどすべてがコアです)

  2. これらのパッケージをそれぞれダウンロードします(このビットをスクリプト化するのに煩わしくなかったので、packages.ubuntu.comにアクセスして、の下のどこかにダウンロードしてください/target)。運が良ければ、いくつかのパッケージがまだに浮かんでいるかもしれません/target/var/cache/apt/archives

  3. パッケージごとに、を実行し/target/usr/bin/dpkg -x <package> /targetます。私はdpkg最近、すべてが自己完結型であり、/binそれ自体で何も呼び出すべきではないことをかなり確信しています。

システムを使用できるようになったら、を確認してを実行する必要がありapt-get --reinstall install <all the packages from step 1>ます。なぜなら、(Sysadmin Catは本番システムではノーノーであるプレリリースを実行しているため、パッケージのバージョンが異なるためです)抽出したばかりのものが以前のシステムにあったものとは異なる可能性が高いため、システムが何が何であるかをシステムが正確に認識していることを確認する必要があります。


いい答えですが、何か不足していますか?dpkg-query -S /binあなたのgrep .. | sedスタンザと同じことをしませんか?リストをクリーンアップして、1行に1つのパッケージ名をリストする必要がある場合はdpkg-query -S /bin | sed 's/\,\ /\n/g'機能します(ただし、最後の行に余分な:/ binがあります)。
Janne Pikkarainen、2011

1
はい、そうです-実行されたものが何かで必要になった場合に備えて、ターゲットシステムで実行されるものの量を最小限に抑えようとして/binおり、レスキューシステムでDebian固有のものに依存してそれを将来のファインダーのために可能な限り一般的です。
ウォンブル

これは必須のシステムユーティリティのみのリストのよう/binです。ファイルを含む他のパッケージもありませんか?システムにすべてのパッケージを再インストールする必要がありますか、それともリストの結果として生成されたパッケージのみを再インストールする必要がありますか?(また、ありがとうございます、私はあなたを愛しています!)
Tom Marthenal

1
通常、必須パッケージのみにファイルが含まれ/binます/usr。ほとんどのパッケージでは、すべてのデータをその下に配置する必要があります。私のシステムでは、必須でないパッケージ(例zsh:)のいくつかのみが/bin「次のものを含む」リストに含まれています。ところで、賛成投票は愛を示すのに最適な方法です...
ウォンブル

1
私はあなたの指示に従いました、そしてそれらは完全に機能しました—私のサーバーはバックアップして稼働しています。助けてくれてありがとう!
トムマルセナル2011

5

あなたの戦略はうまくいくかもしれませんが(それのための良いチャンスはあります、一度binディレクトリをコピーして戻した後、システム内のすべてのパッケージのapt-get再インストールを実行した場合はさらに)、次のような問題が発生する可能性があります不安定なサーバー。

それが私に起こったとしたら、私は再インストールし、毎日のバックアップから復元します。あなたは毎日のバックアップ-災害復旧計画-を持っていますか?

災害復旧計画がなかった場合は、保存したいすべての構成ファイルとデータをバックアップし、再インストールを続行することをお勧めします。そうすれば、安定したサーバーで再び終了することが確実になります。


1
彼がここに投稿して以来、彼はバックアップがない/ binフォルダーを回復する方法を推測しています。
Goez、2011

残念ながら、毎日のバックアップはありません。当時私が書いていたbashスクリプトは、皮肉にも毎日のバックアップスクリプトでした。再インストールするようです。アドバイスをありがとうございます。
トムマルセナル2011

再インストールする必要はありません。私の答えを見てください。
ウォンブル

ファイルシステムのスナップショットは、このような状況からの回復に非常に役立ちます。残念ながら、ext2 / 3/4ファイルシステムはそれらを実装せず、LVMでそれを実行するとパフォーマンスが大幅に低下します。FreeBSDボックスの/ binを誤って削除してしまった場合は、以前のスナップショットをマウントして、ファイルをファイルシステムのライブバージョンにコピーして戻します。OS Xもおそらくこれを持っています(「タイムマシン」と呼ばれています)。
スナップ

3

VMを作成して/binから、破損したマシンに内容をコピーしてみます。これで問題なく動作するはずです。次に実行します

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

これにより、システムにあったすべてのパッケージが再インストールされます。


1

マシンにアクセスできる場合、最も簡単な方法は、ファイルシステムをマウントし、すべてのデータのバックアップを取ることです(念のため)。

その後、通常のインストールと同じようにubuntuを再インストールできます。原則として、すべてのデータ(home dirなど)はまだそこにあるはずです。

/ binが再入力されるようにすべてのパッケージを再インストールする方法がありますが、それはかなり複雑です。


0

ファイルはなくなりました。ファイルの「削除を取り消す」ことはできますが、お勧めしません。

注:私はUbuntuを実行していません(Debianディストリビューションをしばらく使用していません)。しかし、私は過去にすべての同様のシナリオに従って、過去にさまざまなディストリビューションの回復を行いました。

あなたの最善の行動:

  • liveCDから起動
  • liveCDを使用して、システムsomplaceをマウントします(たとえば、/mnt/mint
  • dpkgを使用してインストールされているすべてのパッケージを照会ます。
#dpkg --admindir = / mnt / mint / var / lib / dpkg -l
  • 次のようにapt-getを使用して、これらすべてのパッケージを/ mnt / mint宛先にインストールします。
#apt-get -o RootDir = / mnt / mint .... 
  • (代替#1)あなたはデストラップする必要があるかもしれ/mnt/mintません-わからない
  • (代替#2)/binliveCDの内容をにコピーできます/mnt/mint/binが、mintのliveCDがbusyboxを使用しているかどうかがわからないので、問題が複雑になる可能性があります。

一般的に、これはあなたが持っているすべてのものの「ブルート再インストール」によってあなたのファイルを返すはずです。/ binにバイナリをドロップしたすべてのパッケージに対して、もう少し「巧妙な」トリックを実行してクエリを実行できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.