root で rm -rf /
ネタとしては死ぬほど見かけるこれ、実際にした人は少ないと思います。 ぜひ一度はやってみましょう。 参考 ttp://www.sra.co.jp/people/katsu/doc/rmrf/
今だ!2ゲットォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ やってどうすんのよ?www けど実際にやってみたやつがいるとわ。。 ーーーーーーーー終了ーーーーーーーーーーーーー VMwareでやるならNon-persistentモードでやれば 何度でも rm -rf / の実験が手軽にできるよ。 オレやったことあるよ。Vine 1.1で。 XEmacsコンパイルして、展開したソース消そうとして、 % rm -fr XEmacs(スペース)/ ってやっちゃったの。やけに時間かかるな。あれっ?ひょっとして.. で、あわてて止めたけど、もう ls も cd も無かった。 Windows パーティションも巻き添えになって綺麗に消えてきれました。 当時は知識がなかったので、仕方なく始めから入れ直したけど、 FDで起動していろいろ調べれば面白かったかもね。 犬厨だった2年ほど前の事でした。 #今も厨だけどね。 (´-`).。oO(rm .*~ しようとして rm .* したことがあったなぁ) rm -rf / とrootでやろうとすると laser5linux でやると効かないよ いやね ほかもそうかな オレのパソコンNECだけど、試しにやってみたら、不要ファイルが消えて パソコンの調子が良くなったよ。みんなも一度はやってみなよ。 >>10 俺もある... これ以降findでゴニョゴニョとするようになった やった人ほんとに少ないかな? だれでも一度はやることではないかと。 ちなみに2度やった人を攻めるつもりもありません。 自慢じゃないけど、UNIX歴10年以上だけど、 # rm -rf / や、それに類することは一度もやったことない。 rm とはちょっと違うけど、 CDPATHを設定していて、 cd 時に意図とは違うディレクトリに移動してしまい、 その違うディレクトリ上でファイル操作を行なってしまって 混乱したことがあった。 それ以来 CDPATH の設定をやめた。 また、シェルの各種の「便利な機能」も誤操作の元なので、 できる限り設定を外して使わないようにした。 root で rm の入力ミスはやばいので、 rm の option 引数全部書いてから 行頭に戻って sudo 書いて実行してます。 単純な疑問です。なぜOSやコマンドが消えているのにプロセスが停止しないのでしょう? メモリにプログラムやOSがすでに格納されているから? と思っているのですが。 >>17 その状態においてスワップしたらとまるUNIX多いです。 (カーネルだけあるけど何も動かん状態) とまらなかった、という解もあるけれども、 必ずしもそれが一般解ってわけでもありません。 その訳に気付け もっとOSと対話しろ 誰か rm をハックして rm -fr / とできないパッチを公開して下さい >>20 大概のUNIXにはGENZINAという機能があり aliasというコマンドを使って味噌 つかな早い安いでかいの大容量HDD時代なんだからrmなんて 使わないで自分でごみ箱プログラム作っておくのが常識最強 恐ろしく忘れたころごみ箱掃除すりゃいいんだよ #!/bin/sh MSG1=そのようなファイルやディレクトリはありません。 MSG2=ごみ箱の中身を表示します。 MSG3=ごみ箱の中身を消去します。 MSG4=このプログラムはごみ箱を使うためのプログラムです。 DATE="$(date +%y%m%d-%H%M%S)" TRASH=Trash if [ -d ~/"$TRASH" ];then : else mkdir ~/"$TRASH" fi case $1 in -s | --status ) ls -A ~/"$TRASH"/ ;; -d | --delete ) rm -rf ~/"$TRASH"/* ;; -h | --help ) echo " -s --status : $MSG2" echo " -d --delete : $MSG3" echo " -h --help : $MSG4" ;; esac if [ -e "$*" ];then mv "$*" "$*$DATE" mv "$*$DATE" ~/"$TRASH" fi はじめて組んだスクリプトなんでつっこみキボンヌ もうちょっと詰めたい所があるけどとりあえずこれだけ。 やりたいこと、 その1、せっかくMSG1とかにしてるので 環境変数あたりで英語のメッセージをだせるようにしたい。 その2、ごみ箱に移動させるときの引数が"$*"だと 複数のディレクトリを同時に処理できないのでなんとかしたい。 その3、その2の処理のときにエラーメッセージもだしたいが、 caseの"$1"と処理の"$*"でぶつかってしまうのでそれをなんとかしたい。 って、こんな簡単なスクリプトで1時間以上なやむなんて…(鬱 >>24 マシンに力があるなら圧縮を取り入れるとファイルも1個になりで吉 a=${a:-`date '+%y%m%d_%H:%M:%S'`} lha a /mnt/sys.login/ゴミ箱/"$a"back.lzh $* \rm -R $* 圧縮は好みで選択。複数なデレクトリやファイルでもダイジョブだろ いつから >#!/bin/sh で > DATE="$(date +%y%m%d-%H%M%S)" なんてことができるようになったんだ。知らなかった…。 だめだーーー(涙 if [ -e "$*"];then が原因だったっぽい。 ってことで if [ -e "$*" ];then mv "$*" "$*$DATE" mv "$*$DATE" ~/"$TRASH" fi は tar -cvf ~/"$TRASH/back-$DATE.tgz "$*" rm -R "$*" に修正でっす。 うひひさんありがとー♪ >tar -cvf ~/"$TRASH/back-$DATE.tgz "$*" 俺も厨なんであれだがこの行おかしくね? あ、>>26 さん。 僕はlinuxなんで/bin/shはbashです。 でも、ashでもできましたよ?(たった今確認) むー、今度は case文のところでエラーがでたぞ(汗 (27の修正で…) >>28 おかしいっす。 「"」の数があってない(藁 一応完成かな? #!/bin/ash case $LANG in ja_JP*) MSG2="ごみ箱の中身を表示します。" MSG3="ごみ箱の中身を消去します。" MSG4="このプログラムはごみ箱を使うためのプログラムです。" ;; *) MSG2="Show files in TRASH BOX" MSG3="Delete files from TRASH BOX" MSG4="This program is to use TRASH BOX" ;; esac DATE="$(date +%y%m%d-%H%M%S)" TRASH=Trash if [ -d ~/"$TRASH" ];then : else mkdir ~/"$TRASH" fi case $* in -s | --status ) ls -A ~/"$TRASH"/ ;; -d | --delete ) rm -rf ~/"$TRASH"/* ;; -h | --help ) echo " -s --status : $MSG2" echo " -d --delete : $MSG3" echo " -h --help : $MSG4" ;; *) tar -czf ~/"$TRASH"/back-"$DATE".tgz $* rm -R $* ;; esac ちなみに、alias で rm -i とオプションを付けるのは却って危険です。 絶対にやめましょう。 初心者だったころ, # rm -fr /etc をやったことある. 再起動もできなくなった. 諦めて再インストールした. >>29 SunOS[45] の /bin/sh じゃできんよ。 ksh あたりが由来の拡張機能じゃないかね? 作ってる奴に質問なんだが -s オプションってtgzファイルが一個見えるだけで 何の意味もないんでない? lsを使うんじゃなくて"tar tvf ゴミ箱のなかのファイル" っていうふうにするんでは? というかすでに$TRASH はディレクトリである必要もないし。 ところで圧縮書ける時のtarのオプションおかしくね? ファイルを追加する場合はcじゃなくてrでなかった? >>34 つかえないshもあるってことですね。 肝に命じておきます。 >>36 いちおう最初の予定でそのままmvするはずだったので、 ls -A になってますた。そのために秒数までfile名に埋め込んだので… 何時ごみ箱にほうりこんだか分れば良いかなと… あとは、時間からほうりこんだfileを予測して、 わからない分はtar -tzf hogeで確認ってことで? 駄目っすか?(汗 そんな感じで r じゃなくて c にしました。 でも、36さんのやつの方が良さそうなので書きなおしてみまっす。 あ、元作者さん居たのか。 居ないのかとおもって書き直し始めてたのに。 まぁ書き直してくれるなら任せよ。 一度gunzipしてからtar rしないといけないのが 微妙に面倒くさい感じ。 任せるつもりが完成してしまったんではっとく #!/bin/sh case $LANG in ja_JP*) MSG2="ごみ箱の中身を表示します。" MSG3="ごみ箱の中身を消去します。" MSG4="このプログラムはごみ箱を使うためのプログラムです。" ;; *) MSG2="Show files in TRASH BOX" MSG3="Delete files from TRASH BOX" MSG4="This program is to use TRASH BOX" ;; esac DATE="$(date +%y%m%d-%H%M%S)" RECYCLE=trash.tar if [ -w ${RECYCLE}.gz ];then gunzip ${RECYCLE}.gz fi case $* in -s | --status ) tar tvf $RECYCLE gzip $RECYCLE ;; -d | --delete ) rm $RECYCLE ;; -h | --help ) echo " -s --status : $MSG2" echo " -d --delete : $MSG3" echo " -h --help : $MSG4" ;; *) tar rf $RECYCLE $* gzip $RECYCLE rm -r $* ;; esac しまった。-s オプションが与えられた時の処理を -s | --status ) if [ -r $RECYCLE ]; then tar tvf $RECYCLE gzip $RECYCLE else echo "$MSG5" fi にしないと-dした後におかしな動きになるわ。 こうなりました。 ん〜、case文のなかにif文… 美しくない… #!/bin/ash case $LANG in ja_JP*) MSG2="ごみ箱の中身を表示します。" MSG3="ごみ箱の中身を消去します。" MSG4="このプログラムはごみ箱を使うためのプログラムです。" ;; *) MSG2="Show files in TRASH BOX" MSG3="Delete files from TRASH BOX" MSG4="This program is to use TRASH BOX" ;; esac TRASH=DustBox case $* in -s | --status ) tar -tzvf ~/"$TRASH" ;; -d | --delete ) rm -rf ~/"$TRASH" ;; -h | --help ) echo " -s --status : $MSG2" echo " -d --delete : $MSG3" echo " -h --help : $MSG4" ;; *) if [ -f ~/"$TRASH" ];then tar -rzf ~/"$TRASH" $* else tar -czf ~/"$TRASH" $* fi rm -R $* ;; esac あとは取り出しをどうするかだな。 できれば組み込みたい。。。 >>41 tar rzf って可能? うちの環境ではエラー吐いたんだけど。 バージョンはこんな感じ > tar --version GNU tar version 1.11.2 あと、取り出しよりも前に引数がなかった場合に エラーメッセージ出したいんだけど、どうすればいい? シェルスクリプト書いたことなくてよくわかんね。 rzfはこっちの環境でか可能です。 tar (GNU tar) 1.13.17 debian GNU/linux のpotatoなんで結構古いはず。 って。woodyもそんなにかわらん tar (GNU tar) 1.13.25 (woody) これって、TRASH にファイルを突っ込むソフトはどれ? Debian はいけるのか。俺、FreeBSD だからなぁ とりあえず、引数のチェックを入れてみた こんなもんでどうだろう? #!/bin/sh case $LANG in ja_JP*) MSG2="ごみ箱の中身を表示します。" MSG3="ごみ箱の中身を消去します。" MSG4="このプログラムはごみ箱を使うためのプログラムです。" MSG5="ごみ箱は空です" ;; *) MSG2="Show files in TRASH BOX" MSG3="Delete files from TRASH BOX" MSG4="This program is to use TRASH BOX" MSG5="TRASH BOX is empty" ;; esac RECYCLE=$HOME/.recycle.tar if [ ! $1 ]; then echo "use -h for help" exit fi case $* in -s | --status ) if [ -r $RECYCLE ]; then tar tvzf $RECYCLE else echo "$MSG5" fi ;; -d | --delete ) rm $RECYCLE ;; -h | --help ) echo " -s --status : $MSG2" echo " -d --delete : $MSG3" echo " -h --help : $MSG4" ;; *) if [ -w ${RECYCLE}.gz ]; then gunzip ${RECYCLE}.gz tar rf $RECYCLE $* else tar cf $RECYCLE $* fi gzip $RECYCLE rm -r $* ;; esac んで、良くわからんのが たとえば $dust -g [file1 file2] としたときに、スクリプト側でどんな風に引数わたしたら 良いかわかんない(汗 この場合 dust がこのスクリプトで -g が get でfileの取り出しを する引数、んで、第2引数以下を取り出すfile名にしたいんだけど… >>48 ちょっと調べてみたけど引数は$0〜$9までで $0はコマンド名、$1がオプションとなると8個までしか 同時にファイルを指定できないんだよね。 $2〜$9を並べれば一応できるけどちょっと不便・・・。 もっと詳しい人降臨希望。 ちょと訂正あり。 case $* in -s | --status ) if [ -r ${RECYCLE}.gz ]; then tar tvzf ${RECYCLE}.gz else echo "$MSG5" fi ;; -d | --delete ) rm ${RECYCLE}.gz ;; {}.gzが抜けてますた。 ん〜、shiftで行けるのかな? こんな感じで。 #!/bin/sh case $1 in -r ) shift echo "get $*" ;; * )echo "end" esac exit 0 どうだろう? どうも、 for $hoge in $@ do $hoge done ですべての引数を処理できるらしい 取り出しを組み込んでみたよ。 ln -s dust recycle した上で使ってくれ。 #!/bin/sh TRASH=$HOME/.trash.tar TMPDIR=/tmp MYNAME=`basename $0` (中略) if [ $MYNAME = "recycle" ]; then if [ -r ${TRASH}.gz ]; then tar xvzf ${TRASH}.gz -C $TMPDIR for file in $1 $2 $3 $4 $5 $6 $7 $8 $9 do cp ${TMPDIR}/$file . done else echo "MSG5" fi exit fi (後略) ゴミ箱にいくつも同じファイル名のファイルがあった場合や 引数が多すぎた場合の処理だとか、TMPDIR の後始末が課題になるな なんか投稿できてなかったぽいのでもう一度。 前略 case $1 in -s | --status ) if [ -r ${RECYCLE}.gz ]; then tar tvzf ${RECYCLE}.gz else echo "$MSG5" fi ;; -d | --delete ) rm ${RECYCLE}.gz ;; -g | --get ) shift tar zxvf ${RECYCLE}.gz $* 後略 exit 0 これでどうかな? >>54 いきなり難しくなった(藁 ちょっとman読むね。 >>56 ノォォォォッ!! tar xvzf hoge.tar.gz ファイル名 でファイルが取り出せるなんて UNIX使い始めて4年目にして初めて知った!(激恥 #!/bin/sh TRASH=$HOME/.trash.tar MYNAME=`basename $0` (中略) if [ $MYNAME = "recycle" ]; then if [ -r ${TRASH}.gz ]; then tar xvzf ${TRASH}.gz $@ else echo "MSG5" fi exit fi (後略) コレだけでよかったのか? こんなの考えてたのに・・・。 mkdir ${TMPDIR}/$$ tar xvzf ${TRASH}.gz -C ${TMPDIR}/$$ for file in $1 $2 $3 $4 $5 $6 $7 $8 $9 do cp -r ${TMPDIR}/$$/$file . done rm -rf ${TMPDIR}/$$ >>57 > tar xvzf hoge.tar.gz ファイル名 > でファイルが取り出せるなんて > UNIX使い始めて4年目にして初めて知った!(激恥 僕もtarのoptionながめてて、ついさっき知りました :-) > #!/bin/sh > > TRASH=$HOME/.trash.tar > MYNAME=`basename $0` > > (中略) > > if [ $MYNAME = "recycle" ]; then > if [ -r ${TRASH}.gz ]; then > tar xvzf ${TRASH}.gz $@ > else > echo "MSG5" > fi > > exit > fi > > (後略) > > コレだけでよかったのか? っぽいですね。 でも、僕はまだ $* と $@ の違いがわかってなかったり。。。 ん?$*にはIFSってのがからんで$@には関係ないのかな? って、IFSってのが良くわからん(汗 んで、どっちを採用しましょう? 僕的にはcase文にいれたいですけど… どっちがよりスマートなんでしょう… >>58 http://www.rhythm-cafe.com/kb/shell/index.asp?sid=46&id=55 に$@ と$* の違いが載ってたよ まぁ、取り出しをどうするかなんてのは好みでいいんじゃないかな。 でも、俺のやり方だとシンボリックリンク用意しないといけないから そっちのがスマートかもね。 >>59 おぉ、thx!!一発でわかった(爆 俺頭悪いな(汗 ってことで、ちょこちょこ修正して ん〜、2ch/Linuxスレのupローダにでもあげときますわ。 使いたい人は御自由にどうぞってことで。 あああああああ、ネタのようだ。。。。。 折角つくったfileをrm しちまった… あほだ<俺 >>61 ちょっと目を離したすきにヤルじゃん。オチも良いよ っていうかさぁワラタ 良いネタ師になれる 僕はあくまでrmとして使うから復活は全く考慮しない 倉庫代わりのクセはイヤンだから でも凝るのもなかなか良いかもね こんな時こそゴミ箱を! ってシャレになんねーな(w 俺の作った野でよければ http://musou2.compress.to/dust に置いとくよ。 翻訳メッセージの取得に gettext コマンドを使うとそれっぽいかも。 そこまですることのもんでもないかもしれんが(ワラ >>46 のやつは保存してたので、それを元に書きなおした♪ ミスってたら、やだな。 http://linux2ch.omosiro.com/cgi-bin/upload.cgi の081.binです。拡張子を取って好きにリネームしてください。 んで、PATHの通ったとこに。 -g オプションの後にファイル名を与えないと 全部のファイルが取り出されるのは仕様ってことでいいか(w >>66 おっけーでしょう?(藁 普通にtarでも引数を指定しなかったらすべて取りだすし。 あれ?もしかして。"-s"あたりに統合できるのか?(汗 スレとはあんま関係無いけど、 FATパーティションをマウントし、"con"って名前のファイル作って Windowsを起動したらどうなりますか? 流れよく読んでないけど、 #!/bin/sh で動かない script なら、 行頭の文字を #!/bin/bash, #!/usr/bin/bash などと限定した方が いいと思う。 むかし >>9 と同じようなコトした。スペース入れて、やけに時間かかると思ったのも 同じ。今は/に“-i”って空のファイルを置いてる。気休め、気休め。 >>20 rm -i を rm のエイリアスに設定していると、知らないうちに \rm と打っている自分が います。 zsh とかで \rm -R * するとホントに消して良いのか? ってメッセージが出ますよね。 それを \rm -R /* の時だけ、繰り返しメッセージ出すように変えられませんかね? 或いはコマンド自体、完全に禁止してしまうとか。 >>64 bash2なら http://www.unixuser.org/ ~ysjj/bash_script_i18n.html というのがあるYO! ここで出来たスクリプト、おっきなファイルを捨てようとすると 重いのはまぁ納得だし、我慢するけどスペース含んだファイルを 捨てれないのが微妙にイタい。 >>80 >我慢するけどスペース含んだファイルを >捨てれないのが微妙にイタい。 本当だ、気づかなんだ… なんか解決策ないっすかね? $find / -depth \( \( -type d -exec rmdir -- \{\} \; \) -o \( ! -type d -exec rm -- \{\} \; \) \) 1で参照されているページを書いた者です。 >19 その状態においてスワップしたらとまるUNIX多いです。 それは普通ないと思ってます。 「多い」とのことですが、私の基準ではそれは病的な実装です。 実証されれば、広く発表するに値する情報かと思います。 具体的に、どんなOS(のどんなバージョン)で起きるのでしょうか? 再現する方法がありますか? 止まるとは、具体的にはpanicするということでしょうか? ちなみに、 http://www.sra.co.jp/people/katsu/doc/rmrf/ での実験中にはpaging activityも通常どおりありました。 >17 なぜOSやコマンドが消えているのにプロセスが停止しないのでしょう? UNIXと呼ばれるもののsemanticsでは、 unlink(2)やrm(1)しても、コマンド(や対応するファイル)は*消えない*んです。 ディレクトリから消えるので、ls(1)とかするとなくなったように見えますが、 だれかが参照しているかぎり(コマンドを実行中とか、open(2)してるとか) ファイルシステムには残ってるというわけです。 でも、NFSクライアントがバイナリを実行中に、 NFSサーバ側からそのファイルを rm すると、 本当に消えて NFS クライアントがコアダンプしたりもする。 NFSクライアント側から消した場合は一応問題はないが、 .nfs???? とかいうファイルが出来てそれはそれでうざい。 >80 スペース含んだファイルを捨てれないのが微妙にイタい。 quoteに全く気を使っていないからでしょう。 ここで書かれたスクリプトについては検証していませんが、あくまでも一般論として: quoteに気を使わないで書かれたスクリプトは、トロイの木馬的なセキュリティホールを空けてしまう 可能性が大です。理由は自明でしょう。使ってはいけません。 セキュリティとは関係なくとも、いかにも事故を誘発しそうな気がしますよね。 shでスクリプトを書く場合、$@や$1のように表記するのが正しい局面というのはほとんどありえません。 "$@"や"$1"のようにすべきです。 通常の変数については、中身にある種の仮定が常に成立することをもって quoteを省略する根拠とすることもありえましょう。 ちなみに、"$@"という表現はportabilityに問題があった時代もありました。 現在の事情はよく知りません。 だれかshに詳しい人教えて下さい。 >>86 "$@" ってポータビリティに問題があった時代があったのですか? たとえば、NEWS-OS 4.x の /usr/bin/nohup で、 通常なら "$@" と書くべきところが $* になっていて、 「これ書いた人シェルスクリプト知らねーんじゃねーの?」 と、思っていましたが、知った上であえて $* と書いていたのでしょうか? >1 そーか? 寝惚けてた俺はカレントのファイルを消そうとして rm -rf ./* → rm -rf /* と打ったことに気がついて一瞬で目がさめたよ。 寝惚けて妙な事をする事は無いけど、たまに恐ろしく 眠くて意識を失ないかけのときは何をしでかすか分からんから そんな時の自分は恐い。 rm -rf * とかは、必ずbashで C-x * して コマンドライン中で展開してから実行する。 あと、1回目はlsして、2回目にそれをrmに換えるとか。 rmがオプション取らないようにmakeしなおした。 >>91 その手の回避策を取っていると、環境が変わった時に惨劇を引き起こす場合のある罠 ディレクトリ単位で消す時はなるべくファイラ使うようにしてます。 >>94 で、長いディレクトリを消そうとしたら、バッファの扱いが適当じゃなくて・・・。 >>92 >>74 「yぽこ病」ってのもあるらしい。 亀だけど、 >>19 スワップはふつー独立のパーティションにあるから 関係ないんじゃないすか。 /bin、/devが消えたとこでCtl+c しましたが、何か? (もちろん再起不能) rootでファイルを消す必要があった時は、 # mv hoge /tmp して、自動で消えてくれるのを待つようにしている。 下のようなスクリプトを実行してしまって得た教訓。 # set build=/tmp/hoge rm -rf $build/* cd $build tar zxf /tmp/hoge.tar.gz あるネット関連会社の社長は、「いずれにしても2ちゃんねるは 資金が底をつけば終わり。あまり知られていないことだが、 2ちゃんねる内部関係者によると今、大手通信会社系が調査費名目で資金提供している。 だが、それが止まれば続けてはいけないだろう」と証言する。 2ちゃんねるが判決によって力を失った場合、資金提供の打ち切りも予想される。 http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html 以下、別の記事のキャッシュ http://memo2ch.tripod.co.jp/article.html 2ちゃんねるに近いあるインターネット関連会社の社長は、2ちゃんねるの幹部から得 た話として証言する。「2ちゃんねるは、運営者や幹部などがそれぞれ別々に会社を 作りカネの流れを見え難くしているが、実際の資金源は複数の大手通信会社系からの 調査費名目のカネ。月額で計約700万円と言い、年間にすれば1億円近く。額はともあ れ、これは通信会社系的には、ぼう大なトラフィックを調査すると言う表向きの理由 が一応は立つ。自社系に都合の悪い書き込みがされた時に優先的に削除してもらうこ とも期待している」と前置きし「通信会社系の削除の期待も含めて、2ちゃんねるは 総会屋と同じになっている」と言うのだ。 その具体的な理由として社長は、こう話す。「2ちゃんねるはボランティアの削除人 が書き込みをチェックして、好ましくない書き込みを一所懸命削除している、という ことになっているが、あれはウソ。削除人には給料が支払われ、その給料の原資と なっているのが、まずいことを書き込まれた企業が削除要求とともに渡す裏金。これ はまさに、総会屋の構図そのものだ。これまで裁判になっているのは金額で折り合え なかったり、裏金を出さない強い態度の企業とだけだ」 漏れのつまらん失敗談。 アンインストしようと思ったPlamo Linuxに #cd / #rm -fr / したら,Windows領域自動mountしてるの忘れてて,気づいた時には Program Filesフォルダが消えていた. >>106 思わず藁田 # Plamo'er なら update より再インストだろうが、 俺も気をつけねば。 NFSで(ry -o root 渡すマシンは考えてやろうという教訓 恥ずかしながら本当にやってもた。 #pwd /root/junk/ #rsync --delete rsync://localhost/test/ . rsyncd.confの記述ミスでエラー. #cd /etc #vi rsyncd.conf #rsync --delete rsync://localhost/test/ . # <<< やってもた! /etcの下をゴミファイルに変えてしまいました。 間違って、やってしまいました..... 気がついた時には.... boot領域の容量が、半分になってしまった..... たく。。 くそ忙しいのに....涙 最近OSの調子が悪かったので、再インスコの前にバックアップをとって、しました。 バックアップHDをつなぎっぱでやってしまったので、全て消えました。 私は何も知らなかったころ、自分専用マシンだからまだ良いものの rm -fr $PWD ペシッ ・・・うぐおおお! となったことがあるのでsudo使ってますが何か? >>117 sudo rm /etc した事があります。 直前にもsudo使ったので、パスワード確認無し… 似たような構成のマシンからそっくりコピーしてなんとか復旧。 以前、カレントディレクトリ以下の特定の名前のディレクトリを まるごと全部消そうとしたとき、 find ./ なんちゃらかんちゃら -exec rm -r {}/* \; みたいにやったら……そりゃないよママン。 変な制限つけないでくれよ。 やったことあるよ、結果は分かるでしょ。 rm -rf ./ のつもりが、 rm -rf . / になってたのよ。 ついに rm -rf をやってしまいました。 一週間分の仕事がパー。 テスト中のスクリプトの中でこんな記述が あったのが悪かったようです。 rm -rf "$DIR/$FILE" ここで $DIR も $FILE も空だったため、 / が消えてしまった、と。 でも、rm -rf 自体は必要な操作なので、 IsSafePath() とでもいうシェル関数を作って、 削除前に確かめたいのですが、 どんなふうにすればいいでしょうか。 IsSafePath() { path=$1 if [ $path = "" ]; then return 1; elif [ $path = "/" ]; then return 1; fi return 0; } とりあえずこんなのを書いてみましたが、 これだと "///" とか "/test/.." とか home ディレクトリで "../" とか ln -s / test を対象に "test/" とかが 通ってしまいます。 何かいい方法はないでしょうか。。 >>131 そもそもrootでやる必要があることなのか ? >>132 そ、そ、それは・・・。 でもせっかくシェル関数を作ってみたので、 "/"と"test/../../"などとの同一性を 確実に見分ける方法を教えてくだちい。 >>134 ・・・それってまさか、/ 以下と target path 以下の ファイルを全部 compare しるってことですか? あっ、でも、こんなのでもいいかも。 で、/ 直下と全く同じ構成なんてまずあり得ないし、 そういうのは全部禁止しちゃっても問題なさげ。 cd $path ls > /tmp/list1.$$ cd / ls > /tmp/list2.$$ if ! cmp /tmp/list1.$$ /tmp/list2.$$; then return 1; fi ありがとうございました! でももっとスマートな方法はないのかなぁ。 / だけじゃなく /usr, /etc, /var などにも 適用範囲を広げられるような。 データ消失記念日 http://dqn.cc/83f815B835E8FC18EB88BL94O93FA.html 「2003年10月初頭、ぼくは操作ミスにより大事なデータを 失ってしまいました。この文書では、データを失った過程を説明し、 反省点および今後に向けた課題について論じます」(『はじめに』より) rmじゃないけど、 $ ln -s /home/hoge /piyo 見たいな事をやろうとして、間違って $ ln -s /piyo /home/hoge とやってしまって1ユーザのホームを全滅させちまったことがある。 rootのaliasでrmをrm -iにするだけでOKじゃんと思っていたが でも確かに\rmってつけて動かす時あるから同じなんだよね。 うーん... 一旦、まっさらにするときに試しにやったことはある。 % \rm -rf / rm じゃないが、パーティションの引越し(/foo→/bar)をミスったことがある。 /bar をtypoして /baz という実在しないディレクトリ名としてしまった。 # cd /foo # tar cvf - . | (cd /baz; tar xf -) ぱっと見では壊れてなさげだったけど、念のため再インストールした。 それ以来はこうするようにしている。 # tar cvf - . | (cd /bar && tar xf -) FreeBSD4.1くらいのときに、ロックか何かされてるんじゃ? なんて、思いながら、 # rm -rf / やりました。 予想外にディスクがガリガリ言い出したので、慌てて 電源切りましたが、二度と起動しませんでした。(ワラ rm -rf / なんてまず使わないのになんでコマンドとして許可されてるのかね いまだに不思議だ 同じことを freebsd-hackers@ にポストした香具師が居たなあ…… ttp://lists.freebsd.org/pipermail/freebsd-hackers/2004-October/008493.html で、お約束の大論争の末、FreeBSDの rm -rf / は封印された。 ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.49 # rm -rf / rm: "/" may not be removed >>151 うへー、すげー大論争。読む気がしないや。 このスレ住人としては封印は悲しいものがあるな。 >>151 ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.49 > Find out how flame-proof my underwear really is. なげやりなコミットログ ワロタ つい、出来心で、OpenBSDにおいて、rm -rf / を実行してみた。。。ゴリゴリ消えている様子w # rm -rf / rm: /home: Device busy rm: /tmp: Device busy ls rm: /usr: Device busy rm: /var: Device busy rm: /: Is a directory # ls: Command not found. # rootでの実行結果w Etermを導入できなかった腹いせにやってみたが、 これから、再インストール。。。 (ターミナルインストールできない俺が厨なだけか、、、 >>152-153 44bsd-csh や v7sh とかあるぐらいだから、 封印してない版の rm を ports/games にでも入れたらどうか。 システムのfullbackup/restore試験のためにsolarisで何回かやったことあるよ。いざという時に戻らないと大変だからね。 システムのfullbackup/restore試験のためにsolarisで何回かやったことあるよ。いざという時に戻らないと大変だからね。 >>161 ttp://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/rm/rm.c#rev1.50 にあるように、POSIXLY_CORRECT環境変数をセットしておけば 封印が解除される。 # env POSIXLY_CORRECT= rm -rf / >>148 C-cじゃだめなの? まっさきに電源に手が行くところが厨っぽいですね。ぷぷ HDDの空き領域を全てのコマンドに対するUNDO/REDO用バッファにすれば無問題。 つーか、root の癖してヘタレだなぁ〜w という漏れもやったことあります。Sun3 の時代。 root でスクリプト作業をしていて、ワークディレクトリとして /tmp/work を掘って作業。 終了後、pwd せずに rm -rf * ディスクアクセスが長い(2秒くらいたった)ので、Ctrl-C をして pwd したら・・・ / にいた。 boot ファイルなどが消滅。 仕方ないので、そのままの状態で他のマシンからファイルをコピーして、 boot ファイルは 再構築した。 全部確認が済んで、再起動の瞬間が一番怖かったw でも、その後もalias も何も設定しなかった。 だってね・・・・ alias とかで慣れてしまったら、他のマシンの root で作業できなくなるから。 root に必須なことは、「ディフォルトの環境ですべてが出来ること」が信条。 上で作ったゴミ箱のスクリプト欲しいんだけど最終版ないの? やっちまった rm -rf / ではなくて rm -rf ./hoge をやっちまった 単にディレクトリの補間ミスなんだが 2ヵ月間かけて書いたテキストがことごとく消えた 泣きそう これも、消えてから2時間後に書いてるし… 本間にやばいな もうかくきにはなれん なんや、死にたくなるな おまえらは、大切なデータが消えたときどうしてる? >>171 RAID1しかしてなかって 1時間おきのrsyncだったから RAID1は同時に消えてる rsyncも気づいていないうちに消えてる >>171 別のサーバでユーザ権限を持っている関係で、 よくネットワーク経由でバックアップを取る。 ある程度変更がでかくなると、別のメディアにもバックアップをとる。 なんらかの原因で死んだ時には、そこから書きもどす。 UNIX系列ではrmが恐いというのもあるけど、 何より、ハードディスクトラブルなどの類はいつ起こるか分からない。 事故を契機に、きちんと防護策を取るようにするといいと思う。 毎回編集後にrm *~やrm *.bakをやってたけど、最近恐くなったんで この用途専用のスクリプトを書いて、rmとは別名でbinディレクトリに置いた。 DOSのUNDELETEコマンド見たいのキボンヌ・・・ なんて言ったら怒られますか? NetApp の WAFL ってファイルシステムではできるらしいよ。 file system snapshot の機能で rm hogehoge すると cp -p .snapshot/hourly.0/hogehoge . で undelete になるらしい。 NASなのでどんなUNIXからでも使えると思う。 WAFL は log structured filesystem の一種みたい。 RAID1だと危険なんだな rsyncも消した次にしたらまったく意味ないし バックアップで完全に他のメディアにまるごとバックアップとるしかないのか? 毎回フルバックアップ取る必要はないし、フルバックアップも毎回同じメディアに上書きしてちゃ危険。 ミラーリングによる耐障害性とバックアップとアーカイブは別の話。 ごっちゃに語るモンではない。 漏れも最近痛い目を見たんで、 -- rm -f /home/.snap/snap-login mksnap_ffs /home /home/.snap/snap-login -- みたいなスクリプトを .xsession に書いた。 今後何かあっても、rootになって -- mddev=$(mdconfig -a -t vnode -f /home/.snap/snap-login) mount -r /dev/$mddev /mnt -- とすればログイン直後の状態まで戻せる。 本格的にやるならcronで定期的に動かしたいところだけど、 mksnap_ffs って意外と負荷がかかるからなあ。 >>180 バックアップはデータの複写を別の箇所に保存すること、 アーカイブは複数のファイルをまとめたファイルまたはそれを保存するサーバで バックアップとして利用できるもの、 ミラーリングはデータ全体の完全な複写を別の箇所にとっておくことで、 フル・アーカイブやフル・バックアップとも呼べるもの、 ディスクシステムとしてオートミラーリングを取り込んだのがRAID ‥という理解でいるけれども、どうだろうか。 互いに重なり合っている概念だと思う。 >>1 のコマンドは無いけど窓初心者の時「c:\windowsって使ってないなー。容量の無駄 だから消すか。」って色々消したら。 電源投入→windowsを起動しています→電源を切る準備が出来ました。 とか言う風になって和露ってしまた。 >>186 が釣りでなかった場合のために、一応。 rmをrm -iへエイリアスする方法の問題は、 yぽこ病を誘発するとしてどこかの文書で非難されていた。 常にrm -iに対応する事で、rm後にyを打つ事に慣らされてしまう問題。 このスレでは>>32 >>74 あたりが関連。 しまいにはrm *.txtなどとして、確認プロンプトで削除ファイルを選別する癖がつく場合もあるとか。 この癖が問題を起こすのが、他環境でのrm実行。 これを防ぐために、どうしてもrm -iをデフォルトにしたいなら、 rmとは別名の(既存でない)コマンドにして常時それを使うようにしろ、というのが一応の結論。 他環境でいつもの癖が出たとしても、command not foundで済むということ。 うちの会社(部署)ではrmをrm -iのaliasにすることを禁止しています。 ときどき抜き打ちチェックが入ります。 Makefileをホームディレクトリとかワークディレクトリに置いてます。 clean: /bin/rm -f *.bak *~ *.core core $ make clean でゴミ削除 rmじゃないけど、うっかりやってしまって地味に痛かったコマンド find ./ -type -d | xargs chmod 700 勿論/で実行してしまったよ…orz 俺は rm -rf /hoge/hage/oyaji を削除しようとして、うっかり rm -rf /hoge/hage oyaji と 入力して Enter してしまったことならあるな。 気付いたのは /hoge/hage 配下に何も見当たらなくなってから。 >193 *BSDならmtreeで簡単に復旧できるなぁ うおおおおおおおおおおおおおおおひいいいいいいいいいいいいいいいいい ぐぎゃああああああああああああああああああああああああああああああああああああああ % ls kashi.txt piyo.mp3 % mv * ~/music/piyo/ を間違って % mv * % ls song.mp3 % としたことがある ヒント: * 「mv *」は「mv kashi.txt piyo.mp3」に展開される * 「song.mp3」 は typo そろそろOS入れ替えるから 新鯖構築終わったら遊んでみるかね 何このネタスレ…と思ったけど>>73 の -i ってファイル置くアイデアはちょっと面白いな。 おれも気休めのつもりで / と ~/ 直下に置いてみた。 まあおれは幸いにしてまだそれほどひどい事故に遭ったことはないんだが。 しかし考えてみると、そもそもファイル削除とディレクトリ(中身含む)削除に 同一のコマンドを使うってのが誤操作を誘発しやすくなってるんじゃないだろうか? ディレクトリ単位での削除には別の適当なスクリプトでも使った方がいいんじゃないかな。 それでも間違える時は間違えるけど、引数チェックで / とかだったら蹴るとかできそうだし…。 …と思ったがこれだと今度はファイルとディレクトリをまとめて削除するのが面倒になるな。 やっぱりこの手の操作は自分で注意するしかないってことか…。 >>210 けっきょくそのスクリプトの方を常用してしまうだろう。 あと、/ だけが危険なわけではない。 むやみに rm に -f を入れる習慣も悪いよ。 特に -r の時は入れるべきじゃない。 ディレクトリ消すだけのときは rmdir を使い、 ファイル込みの場合は rm -r で、 それでパーミッションの警告が出るときだけ rm -fr にすべき。 ってか alias rm='rm -i' ってあまりいい習慣ではないんだな…。おれは長いことこれで通してきたんだが 確かに機械的にy押してしまう傾向があるのは否定できない。これは見直したほうがいいかもしれんね。 しかし mv, cp はデフォルトで -i 付けても問題ないというか、むしろそっちの方が安全だと思うんだがどうなんだろ。 -i しないと>>206 みたいなのが怖いし、上書きするケースってそんなに多くないと思うんだけど。 ゴミ箱スクリプトを作ってaliasしてつかってる。 このスクリプトのバグで予想外のファイルが消えそうで少し恐い。 バックアップが一番か なんて低レベルな話題なんだろう つーかそもそも人間が直接コマンド叩いてやるのが間違い GUIでやれGUIで WindowsではPartitionMagicみたいな失敗したらヤバイ系のソフトには必ず コマンド入力しても実際の操作をする前に「適用」みたいなボタンがあって、 それを押さない限り操作は確定しない または処理フローを試すだけのテストが行えるようになってる UNIXのコマンドにはそういった緩衝材や保険がないのがイカンということだよ GUIでやれGUIで それぐらい注意して出来ない奴がだめ。 俺も時々ミスるが・・・ MSDOS の癖でカレントディレクトリ表示→確認ok→rm -rf ってやろうと思ったらゴミディレクトリ消さずにホームディレクトリ 消してしもうた。ディレクトリ名が出ない時点で止めれば良かったものを あれ何も出ないやまあ良いか的なノリで消してしまった。 rm -i は駄目としても rm -v はやっておいた方が良くないか? まあ単に一部のファイルは助かるかもってだけだが… 家庭用マシン、俺ユーザのMeta-jにWMの制御キー割り当ててるんだけど、suして [/root]10# rm -rf / (←入力途中でWM操作しようとして、誤ってCtrl-jだかCtrl-mを押す) rm: "/" may not be removed [/root]11# 助かったわけだけど(>>151 氏の話) 冬場かじかんだ指で死んだマシンが世界に何台あるだろうかとふと思った 寒い季節は気をつけようね… バックアップファイル(hoge~, .hoge~, ...)を消すスクリプトを作ってみたんだが こいつのバグの所為で悲惨なことになると困るのでちょいと見てやってはくれまいか #!/bin/sh RM='rm -v' # デフォルトではカレントディレクトリが対象 target_dir=. function usage { echo "Usage: $0 [target-dir]" exit 1 } if [ $# == 1 ]; then if [ -d "$1" ]; then target_dir="$1" else usage fi fi find "$target_dir" -type f -and \( -name '*~' -or -name '.*~' \) -mindepth 1 -maxdepth 1 -exec $RM \{\} \; ちょっと試してみた感じでは一応動いてるみたいなんだけど シェルスクリプトはあまり慣れてないので不安だ。 >>227 -maxdepth とか -mindepth といったオプションは 判別式の前に持ってくる事を推奨する。 あと、-name を -regex '.*~$' にすると一つにまとめられるんじゃない? find "$target_dir" -mindepth 1 -maxdepth 1 -type f -regex '.*~$' -exec $RM \{\} \; >>229 レスありがとん。確かに -regex 使う方が簡潔ですね。 あと引数チェックが甘かったのとBashismに毒されてたのを修正。 -mindepth, -maxdepth を先頭に持ってくる理由はよくわからなかったですが findの実装によっては効率が悪かったりするのかな? #!/bin/sh RM='rm -v' target_dir=. function usage { echo "Usage: $0 [target-dir]" exit 1 } if [ $# -eq 0 ]; then target_dir=. elif [ $# -eq 1 ]; then if [ -d "$1" ]; then target_dir="$1" else usage fi else usage fi find "$target_dir" -mindepth 1 -maxdepth 1 -type f -regex '.+~$' -exec $RM \{\} \; >>230 >-mindepth, -maxdepth を先頭に持ってくる理由 man find からの受け売りだよ。 ttp://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html > 全てのオプションは常に真を返す。また全てのオプションは常に効力を持ち、 > 式の評価がオプションの位置に到達したときにのみ実行される訳ではない。 > 従って記述を明確にするためには、全てのオプションは評価式の先頭部に > まとめて置くのが望ましい。 #!/bin/sh $dir="$HOME/temp/*" rm -rf $dir perl使った直後にシェルスクリプト組んだ場合にrm -rf /* を実行しかけ、 冷や汗を掻いた。(2行目の変数のところが誤っていた) このときは echo で実行内容を予め確認しておいて助かった。 職場のワークステーションだったので、 プロジェクトを潰すor遅延を生じさせるところだったよ・・・ ごめん232だけど書き間違い 正しくは↓ #!/bin/sh $dir="$HOME/temp" rm -rf $dir/* 皆様、気をつけてください〜〜 怖いからWindowsのような“ごみ箱”を作っていますが、 そういう方は結構いらっしゃるのでしょうか? (ごみ箱の中はcronで定期的に削除) 単一ファイルを間違って消すよりも、 rm -fr で意図しない削除をして失敗することのほうが多そうだ。 ドットファイルをまとめて消すにはどうしたらいいのだろうか? めんどーだから rm .* ってやればどっと消えるよ >>239 ..erophoto が消えません!>< すみません、 rm -rf * .[^.]* ..?* と3つ消せばよさそうです!>< あちゃ〜(ノ∀`) いま、ちょうどやっちまったよ… rm -rf bin しようとしたら rm -rf /bin だははは ls すらできねぇ もういいや、再インストールだゲラゲラ こういう場合の復活のしやすさってOSによるよね。 配布イメージが細かくパッケージに分かれてるOSだと面倒だから 再インストールする方が早いかも。 *BSDなんかは簡単なんじゃが。 >>243 逆だろ。*BSDだと、OS基本部分がパッケージ管理されていないから どのファイルが消えたか確認するのも大変。 しかも、インスコCDでブートした時のシェル環境が貧弱。 SolarisまたはLinuxなら、OS基本部分もパッケージ管理されてるし、 インスコCDでブートした時のシェル環境が便利だから、 CDブートして、HDDマウントして、パッケージ復元すればいいだけ。 *BSDのほうが面倒?/bin が消えたってわかってるんなら インストールCDの/binの部分を書き戻したらおわりじゃん。 >>243 >>245 は、*BSD以外のパッケージシステムに慣れてないだけ。 慣れればパッケージの方が楽。 今時分割tar.gzを手動展開する方が時代遅れ。 >>242 運が悪かったな おれは先ほど rm -rf tmp/ のつもりが rm -rf /tmp したけど無問題だったぜアヒャヒャ /binのリカバリだよね。 /binにどのパッケージが書くのかをみて対象をパッケージ追加するの? 時代遅れかどうかはともかく、bin.rpm なんてものが存在しなきゃ tgzでいいんじゃマイカ? そうか、慣れると tar zpxf /mnt/usr/DIST/base.tgz -C /mnt ./bin よりも簡単に復旧できるのか。 超強力なパッケージシステムだな。 ぜひ、その手順を教えてくれ。 上のコマンド一発より短いんだから、ここに手順を 貼るのも簡単だろ。(w >>249 それ、NetBSDか? FreeBSDだとbase.aa base.ab ... に分割されてるわけだが。 しかも、RELEASE版に戻してしまっていいならそれでもいいが、 STABLEとかで、自分でmakeしたバイナリだと、それでは戻せないだろ。 やはり、baseも含めて何らかのパッケージ管理をするべき。 > それ、NetBSDか? FreeBSDだとbase.aa base.ab ... に分割されてるわけだが FreeBSD でも cat /mnt/usr/DIST/bin/bin.?? | tar zpxf - -C /mnt ./bin で済むから、10文字増えるだけだよ。 > しかも、RELEASE版に戻してしまっていいならそれでもいいが、 > STABLEとかで、自分でmakeしたバイナリだと、それでは戻せないだろ。 自分で make する時に、配布イメージまで作る習慣をつけておけば無問題。 (俺はそうしてる) そうしてない限り、パッケージ管理してたって駄目。 てゆうか、上のコマンドより少ない手間で済むパッケージシステムなんて あるの? 配布ファイル中の atime は復元できるでしょ。 それとも、そのマシン上でアクセスされた時刻って意味? だったらバックアップを使った restore が必要だねえ。 その場合は tar じゃなくてパッケージシステムの場合も駄目だねえ。 とりあえず、RPM や deb や portage の場合、どうやって復旧するのが いいのか、いまどきのパッケージシステムを使ってる人に教えてほしい なあ。tar より簡単でなきゃヤダなんて無理は言わないからサ。 まさか、再インストール以外に方法がないなんてことはないよねえ。(w >>244 や >>246 はどこに消えたの? 嘘がバレて出てこれなくなった? 時代の先端をいくパッケージ復元方法キボン >>242 でつ この際、最低限のものを/homeとかにもコピっときますた。 cp ls mv tar これだけあればなんとか復帰可能…かなw >>257 知りたいならそんな言い方したら教えてくれなくなるぞ。 素直に「教えてください」と言え。 あと、板違いなので犬板で聞くかググるかすれば答えは見つかる。 # あと、ら抜きやめろよな。 >>254 tarってatime記録されてたっけ? dumpやcpioなら記録されてるけど。 まあ、atimeなんて戻してもしょうがないが。 実験1 cd /home rm -rf .* これで / 以下全て消滅。但し、HPなら rm が .. をはじくように なってるので無問題のはず。Sunは不明。 実験2 マウントディレクトリのトップで、 unlink . fsdb が使えれば修復できるが。Linuxはヤバいかもよ。 tar はアホだからディレクトリの更新時刻が 全て現在に変わってしまったはず。 find -depth | cpio ならきれいに復元してくれる。 しかも tar はパス名100バイトまでしか保障されない。 cpio は1024バイトまで。プロなら tar は使わない。 Windowsだけど、あるシェアウェアのバグでC:ドライブのルートから ごっそり削除されたことがある。 tempフォルダ内のゴミを削除するルーチンが暴走したらしい。 バックアップとってたから被害少なかったけどショックだったなぁ。 > あと、板違いなので犬板で聞くかググるかすれば答えは見つかる。 この一行の返答の方が、>>249 や >>251 のコマンドラインよりも 長いってところが笑えるな。結局 >>244 や >>246 は嘘つきケテーイ ってことか。 Linux 系の場合、/bin だけ復旧するようなうまい手はないのか、 それとも、方法はあるけど、ここには貼れないくらい手順が長いのか、 どちらなのかな。 ここに貼れないくらい長くても、もしも >>262 の言うことが正しくて、 ググれば答が見つかるのであれば、ググった結果の URL を貼ること くらいは簡単にできるよなあ。 >>261 はどうやって復旧したの? パッケージシステム作るときに /bin 消したときの復元しやすさまで考える必要ってあんの? OS を作るときには、障害が起きた時の復旧のしやすさを考えた方が いいとは思うよ。 今回みたいなオペミスだけでなく、システム管理用に作ったスクリ プトのバグとか、ハードウェアの障害とかで同じようなことが起きる ことはあるから。 対処方法として、パッケージシステムで頑張るか、それとも他に 手段を用意するかは、どちらでもいい話。 実際、上で出ている *BSD での解は、OSの基本部分とそれ以外を 分けて、OSの基本部分についてはパッケージシステムを使わずに 回復できるようにするってやり方なわけだし。 /bin に限ってるから調子に乗る馬鹿がでてくる。 /usr/bin とか消した時の議論もしろよ。 /usr/bin でも同じじゃね? *BSD の場合、/usr/bin には OS の基本部分に属するコマンド しか入らない (パッケージは別の場所にインストールされる) から、手順は >>249 や >>251 の延長線上でしょ。 /etc を消したのならともかく /bin /sbin /usr/bin /usr/sbinを消しても、CDなりからすぐに簡単に戻せるよなぁ。 >STABLEとかで、自分でmakeしたバイナリだと、それでは戻せないだろ。 たかがSTABLEだったら/usr/srcをチェックアウトしてmakeしなおせばええやん。 バックアップネタならバックアップスレでやってよ スレ (´∀`( ´∀`) チガイ でも、もまえらなかなか参考になる技をお持ちですな >>273 /bin なしで make ができるのかと小一時間(ry /etc を消したのならともかく /bin /sbin /usr/bin /usr/sbinを消しても、CDなりからすぐに簡単に戻せるよなぁ。 パッケージ管理されてるところを中途半端に消されると 確かに復活は面倒だね。 データベースはあるんだから消えてるファイルだけを復活させる仕組みも 作れば作れるんだろうが。 ってか素直に cron でテープアーカイブつくっとけよ。 きょーび HDD の値段なんかたかがしれてるだろ FreeBSDなら、/rescueの中に色々入ってるからCDから起動する必要もないね あれっていろいろあるように見えるけど、ddとかで直接ダメージを与えたりすると まずくね? LFSなら削除したファイルの復旧が簡単そうに思えるけど、どうなんだろ あるディレクトリに -i と -rf ってファイルを置いたけど何も変わらなかったよ >>247 昨日 あやまって rm -rf */tmpと意味不明なことをやってしまい カレントディレクトリー内のデータがあぼん From: [656] 名無しさん@お腹いっぱい。 <sage> Date: 2008/07/02(水) 12:54:18 カナーリ昔々の話、お茶の水三省堂のコンピュータ書籍売り場でUNIX本を物色してたら、 大学生風のガリ青年とキモデブ青年の2人がやってきた。 ガリ青年がBASICの入門書を手に取ったら(98/88の時代だからね)、 キモデブが素頓狂な大声で 「えー!!BASICなんかダメだよぉ、構造化できないし!インタプリタだし! 最低でもFORTRANを使わないとぉ!」 と絶叫した(ツバがかなり飛んでた) フロアにいた人達は生暖かい目でキモデブを観察。ガリ青年は恥ずかしそうに 「ちょ!大声だすなよ〜恥ずかしいだろ〜みんなこっちを見てるよ〜」 と小声で抗議してた。 >>1-1000 はちょっとそんな感じ? 先日会社の同僚が rm -rf / やっちまったよ… おかげでテストが1日遅れ このご時世に、そういうコマンドが残ってるのは おかしいように思えてきた /::.::.::.::.::.:/::.::.::.::.::.::.::ヽ::.::.::.::.:| : : : : /::.::.::.::.::.::.:/::.::.::.::.::.: /!::.:: l::.::.::.::.:| : : : : ..::.::.::.::.::.::.::.::/:./:.::.::.::/:〈 |::.::.:|::.::.::.::.:| : : : : /::.::.::.::.::./::.::./イ::.::.::.:/:/ Y::.::.|::.::.::.::.:| : : : : ::.::.::.::.::./::.::.;' |::.::.::.,':/l :.::.::| 、::.::.::.| : : : : l::.::l::.::.::.::.::./ |::.::.{/ \| \::.:| : : : : |::.::|::.::.::{::./l 人::.::.| u yぅ笊_.:::| : : : : |::.::|::.::.::∨ ィ笊ぅ\| んxハ 》:j : : : : ひい〜っ! ∨ハ::.::.::.:.. 《 {xぃ} ヒ辷ツ | : : : : 八::.::.::.ハ ゞー′ | : : : : \::.::.| , , ′ ' ' ' | : : : : |\j __ し /| : : : : |:: 八 /ー─ ヽ /::.| : : : : |::.::.::.\ {_, - 、__ノ /::.::j : : : : |::.::.::.::.::.丶__ イ::.::.:| : : : : ::.::.::.::.::.::/ ノ─ァー< |.::.::.:| : : : : ∨::.::./7 / / /_) /|.::.::.:| : : : : ∨:Y/ / {/ / -r< |::.::.:;| : : : : 一生に一度はやりたい rm -rf / でも今時は仮想マシンとかあるし大した話でもないよな そして、仮想マシンに実マシンからNFSマウントしたまま rm -rf / やると。 rm -rf / じゃ面白くないな。 マウントしたまま /をmkfs(newfs)とか、 /のデバイスに/dev/zeroをddとか、 そういう実験報告を頼む! イライラしたら仮想PCでやってスッキリしてるわ イメージさえ取っておけばやり放題 >>299 当然、仮想マシンに実マシンからNFSマウントしたまま rm -rf / やってるんだよな? 現行のOSに付属のrmコマンドで rm -rf / が本当に実行できるのってないでしょ。 実際にはエラーにされるよ。 試したって言ってる人、どうやって実行した? rm -rf /../ とかにするとエラー回避できるのかな? strictにrm -rf /そのままじゃなくて、オプションや環境変数追加していいなら方法あるよ。 GNUのならrm -rf -no-preserve-root /とか。 FreeBSDのならPOSIXLY_CORRECT環境変数をセットするとか。 ホームディレクトリでrm -rf .なら先月やった。 だから、それは最近のUNIXの機能じゃなくてbashの機能でしょ。 _人人人人人人人_ > bashの機能 <  ̄Y^Y^Y^Y^Y^Y ̄ _人人人人人人人_ > bashの機能 <  ̄Y^Y^Y^Y^Y^Y ̄ もう15年以上前の話だが、HP-UXの/tmpをお掃除しようとして、 su rm -fr ./ で徹夜になった。rootのホームが/だったのをすっかり忘れていたんだな。 やってしまった 使い慣れない日本語キーボードでDelete押すつもりでEnter押してしまった 焦ってControl押すつもりでCapsLock押したりして数秒間やってしまった どうすればいいんだろう とりあえず/binはなくなった あと何が消えたか誰か教えて >>303 まじで? cd / && rm -rf * できえるじゃん rootで#rm -rf /*やってもダメージを局所化することはできるよ。 マ イ ン ド コ ン ト ロ ー ル の手法 ・沢山の人が、偏った意見を一貫して支持する 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法 ・不利な質問をさせなくしたり、不利な質問には答えない、スルーする 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法 偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い 靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト 10人に一人は カ ル ト か 外 国 人 「ガ ス ラ イ テ ィ ン グ」 で 検 索 を ! 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 BM9I8L00YT 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方 時間がある方はみてもいいかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 DPJY0 read.cgi ver 08.0u [upliftProject] - 2023/07/09 Walang Kapalit ★ | uplift ★ 5ちゃんねる