LoginSignup
12
10

More than 5 years have passed since last update.

サーバでrmコマンドを安全にする

Last updated at Posted at 2017-11-09

サーバで操作してる時にrmコマンドで消さないようにしたい。
ローカルにあるファイルとサーバにあるファイルを間違え、消してはいけないサーバのファイルを削除してしまいそうになったのでどう対策したのか書きます。

やったこと

  1. rm でゴミ箱へ送られるようにする
  2. 本当に削除したいものは rmrm で削除するようにする

1. rm でゴミ箱へ送られるようにする

rmでゴミ箱へ送るためのaliasなどを公開されている方がいますが、便利そうだったのでtrashを使うことにしました。同名のファイルを削除した時に番号を割り振るなどをやってくれてるので早いです。
インストール。

$ cd ~/src  # 自分がサーバでソースをインストールする先
$ git clone git@github.com:rcmdnk/trash.git

ここで落としてきたtrashを叩くと分かりますがsentakuが必要です。なのでここでは先にインストールしちゃいましょう。

$ git clone git@github.com:rcmdnk/sentaku.git

trashとsentakuにパスを通す。どこかパスが通ってる場所にリンク貼っても良いですし以下でも可。

.bashrc
export PATH=$PATH:~/src/trash/bin:~/src/sentaku/bin

反映

$ source ~/.bashrc

試してみます

$ cd ~/tmp/
$ touch hoge
$ trash hoge
~/tmp/hoge was moved to ~/.Trash/my_trash_box/20171109/hoge

# 同名のファイルをtrashすると連番が振られる
$ touch hoge
$ trash hoge
~/tmp/hoge was moved to ~/.Trash/my_trash_box/20171109/hoge.1

rm は trash へのエイリアスにしてしまいます

.bashrc
alias rm="trash"

更に、デフォルトの設定だと、一度にゴミ箱へ移動できる容量が100MBなので、3GBにしておきました。

.bashrc
export MAXTRASHBOXSIZE=3072
export MAXTRASHSIZE=3072

trash詳細

色んなオプションがありますが少しだけ。
-bでゴミ箱から戻せます(これがめっちゃ便利です)。

 -b              Restore (turn Back) the file from the trash box

環境変数に関して。

環境変数 詳細 デフォルト
TRASHLIST ゴミ箱へ移動したファイル/ディレクトリの情報が残っている。ログファイルのようなもの。 ~/.trashlist
TRASHBOX ゴミ箱の場所。この下にゴミが捨てられていく。 ~/.Trash
MAXTRASHBOXSIZE ゴミ箱の容量(MB)。クリーンアップする時にこの容量を超えている分だけ削除される。 1024
MAXTRASHSIZE 一度に捨てられるゴミの上限(MB)。このサイズを超えるゴミは rm コマンドで直接削除される。 102

2. 本当に削除したいものは rmrm で削除するようにする

rmへエイリアスを張ってもtrashで上書きされてしまっているので /bin/rm へ直接エイリアス。

.bashrc
alias rmrm="/bin/rm"

反映する。

$ source ~/.bashrc

最後に試した例を載せておしまいです。

$ cd ~/tmp
$ touch foo
$ rm foo
~/tmp/foo was moved to ~/.Trash/my_trash_box/20171109/foo
$ touch foo
$ rmrm foo
$ 
12
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10