昨夜ミスをして、意図せずに1800GBのファイルサーバーを削除してしまった


27

昨日このコマンドを実行し、テストマシンで考えましたが、SSHで接続されたファイルサーバーでした。

sudo rm -rf /tmp/* !(lost+found)

私の端末エミュレーターはKonsoleです。私のシステムはDebian 7です。

質問:

このコマンドは、/ tmp内のファイル以外のファイルを削除しましたか?


/ homeファイルシステムがマウントされていない可能性がありますか?
エマニュエル

@Emmanuelファイルが失われたことを確認しました。
何か

1
履歴には削除エラーは表示されません。「kill $(lsof / usr ...)」を実行中に、多くのオペレーティングシステムプロセスを強制終了しました。デーモンを共有しているファイルシステムが影響を受けている可能性があります。サービスを再起動またはファイラーを再起動しようとしましたか?
エマニュエル

1
@somethingSomething Konsoleはシェルではなく、KDEのデフォルトのターミナルエミュレータです。ターミナルにいくつかの文字を入力してみてください。Enterキーを押しdsgsadfsfます。結果をご覧ください。もしそうならbash: dsgsadfsf: command not found、あなたのシェルはbash
ガボールファーカス

5
良いバックアップがあればいいのですが。リカバリを試みる場合は、ドライブのバイトレベルのコピーを作成して実験できるようになるまで、そのシステムの使用を停止してください。問題のファイルシステムへの書き込みは、損害を悪化させます。
CVn 14年

回答:


43

bashの正しい構文は次のとおりです。

rm /tmp/!(lost+found)

以下のよう@goldilocksが 書いたコメントで、元のコマンドは、(それが内のすべてのファイルを削除クエリの拡張を行っ/tmpたフォルダを、その後に行くと、あなたのケースでは、現在の作業フォルダ内のすべてのファイルを削除しhomeたフォルダ)。

データの一部を回復できるかどうかを確認できます。Linuxデータリカバリについての質問がここにあります


28
ちょうどのように-それは、本質的に有名な「私のすべてのデータを破壊し、私のコマンドラインで欠落している空間」の別のケースですので、ああrm -rf / tmp^^
マーティン・フォン・Wittich

8
システム管理者の妄想は無意味ではないことを強調することはできません。:)ルートとしてのみ書き込むことができる場所で、常に最も貴重なデータをバックアップしてください。
ガボールファーカス

9
私は、通常の状況ではrootに書き込みさえできない別のハードディスクまたはサーバーにバックアップしたいです。OPが使用されているsudoため、rootにのみ書き込み可能な通常のフォルダーは必ずしも助けにならなかったでしょう。
マーティン・フォン・ウィッティヒ

良い点、私はOPに十分な注意を払っていませんでした。サーバーのコストは高くなりますが、別のディスクで十分です。デフォルトでマウント解除された別のパーティションを使用しました。シンプルで汚いが、効果的。
ガボールファーカス

1
@simonzackそれは結果的にそれをマウントすることにより、事故の可能性を減らすことができます、それは私にとっては十分です:)
Gabor Farkas

26

!(lost+found)あなたの中rmのコマンドは、おそらく致命的な間違いでした。

1978  rm -rf /tmp/* !(lost+found)
1979  sudo rm -rf /tmp/* !(lost+found)

私はそれで何bashをしているのか正確にはわかりませんが、以下のこのコマンドは、私の/tmp/すべてのディレクトリと現在のディレクトリ(現在のところ~)をすべて表示します:

echo /tmp/* !(lost+found)

!(folder)以外のすべてを削除したRAN一度コマンドI、の一部ですfolder
何か

3
それはzshで動作するかもしれない何かのように聞こえます。バッシュ私はそうは思いません。私が手!lost+found: event not foundとして!の歴史からのコマンドを取得するために使用されます。
ウルテル14年

9
いいね!「bashがそれを正確にやっているとは知りません」 ->拡張を実行しています。「これ以外のすべて」とは何ですか?cd /; echo !(lost+found)> _ <
goldilocks 14年

13
オプションが設定されている!(foo)場合のみ、「fooを除くすべて」としてbash で機能することに注意してくださいextglob。さらに、OPは使用しているシェルを指定しなかったためrm !(lost+found)、彼の場合にコマンドが何を行ったかを推測するのは非常に困難です。
jimmij

5
OPはbash、デフォルトのシェルとしてDebian 7を使用していると述べましたが、すばらしい発言です。彼はおそらくこれを変えなかったでしょう。さらに、Debian 7では、extglobオプションがtrueデフォルトで設定されています(これをチェックしたところです)。
ガボールファーカス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.