サーバで操作してる時にrmコマンドで消さないようにしたい。
ローカルにあるファイルとサーバにあるファイルを間違え、消してはいけないサーバのファイルを削除してしまいそうになったのでどう対策したのか書きます。
やったこと
-
rm
でゴミ箱へ送られるようにする - 本当に削除したいものは
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
$