削除したファイルをゴミ箱に移動する、GO言語製の削除ツール『gomi』を使ってみた

LinuxやMacのCUI上でファイルを削除してしまったら、バージョン管理等で別の場所に保存でもしていない限り、通常は元に戻す事は出来ない。
もし必要なファイルを間違って削除してしまったら、HDDの復元やバックアップなどからなんとかして復旧させるか、泣き寝入りするしかないだろう。

今回紹介するツール『gomi』は、削除とリストアを簡単、かつ分かりやすく行えるCUIのゴミ箱ツールだ。開発はGOで行われている。
開発者は日本人のb4b4r07さんだ。類似したソフトである「trash-cli」などと違い単一のバイナリで動作するため、Pythonのバージョンなどに気を使わなくても良いのが特徴。

それでは、早速使ってみよう。なお、環境はCentOS 7およびUbuntu 14.04 LTSを利用している。

1.インストール

『gomi』はgoコマンドからインストールすることが出来る。
まだgoコマンドが無いのであれば、以下のコマンドを実行しgoコマンドを導入、『gomi』のインストールを行う。

Debian/Ubuntuの場合

sudo apt-get install go
export GOPATH=適当なPATH
go get -u github.com/b4b4r07/gomi

RHEL系の場合

sudo yum install go
export GOPATH=適当なPATH
go get -u github.com/b4b4r07/gomi

なお、環境によってはコンパイル出来ない場合があるので、その場合は以下のようにコマンドを実行してコンパイルを行う。

go build $GOPATH/src/github.com/b4b4r07/gomi/cmd/gomi/gomi.go

それでもうまく行かなければ、こちらからバイナリファイルをダウンロードして配置すると良いだろう。

2.ファイルの削除

さて、それでは実際にファイルを削除してみよう。
gomiでのファイル削除方法は簡単で、rmと同様に以下のようにコマンドを実行する。
もちろん、ワイルドカード等も利用可能だ。

gomi 削除するファイル

[root@dctest01 ~]# ls -la /work/test*
-rw-r--r--. 1 root root  28  6月  1 07:28 /work/test.list
-rw-r--r--. 1 root root  12  4月 21 23:56 /work/test1
-rw-r--r--. 1 root root  10  4月 22 23:43 /work/test123
-rw-r--r--. 1 root root 264  4月 22 23:50 /work/test5

/work/test:
合計 0
drwxr-xr-x. 3 root root 40  5月  3 19:08 .
drwxr-xr-x. 5 root root 96  6月  1 07:28 ..
-rw-r--r--. 1 root root  0  5月  3 19:08 aaaa
-rw-r--r--. 1 root root  0  5月  3 19:08 aaaaa
drwxr-xr-x. 2 root root 18  5月  3 19:06 test
[root@dctest01 ~]# gomi /work/test*
[root@dctest01 ~]# ls -la /work/test*
ls: /work/test* にアクセスできません: そのようなファイルやディレクトリはありません
[root@dctest01 ~]#

削除したファイルは、「$HOME/.gomi/削除年/月/日」フォルダに配置されている。

いつ、何を、どこから削除したのかを調べたい場合は、「$HOME/.gomi/log」を参照するとわかる。

[root@dctest01 ~]# cat $HOME/.gomi/log
2015-06-07 06:51:39 /root/test /root/.gomi/2015/06/07/test.06_51_39
2015-06-07 06:51:39 /root/test.txt /root/.gomi/2015/06/07/test.txt.06_51_39
2015-06-07 06:51:39 /root/test123.log /root/.gomi/2015/06/07/test123.log.06_51_39
2015-06-07 06:51:39 /root/test1234 /root/.gomi/2015/06/07/test1234.06_51_39
2015-06-07 06:51:39 /root/test_eval_1.sh /root/.gomi/2015/06/07/test_eval_1.sh.06_51_39
2015-06-07 06:51:39 /root/test_eval_2.sh /root/.gomi/2015/06/07/test_eval_2.sh.06_51_39
2015-06-07 06:51:39 /root/test_eval_3.sh /root/.gomi/2015/06/07/test_eval_3.sh.06_51_39
2015-06-07 06:51:39 /root/test_ping /root/.gomi/2015/06/07/test_ping.06_51_39
2015-06-07 06:51:39 /root/test_ping_192.168.0.1 /root/.gomi/2015/06/07/test_ping_192.168.0.1.06_51_39
2015-06-07 06:51:39 /root/test_ping_192.168.0.175 /root/.gomi/2015/06/07/test_ping_192.168.0.175.06_51_39
2015-06-07 06:51:39 /root/test_ping_192.168.0.225 /root/.gomi/2015/06/07/test_ping_192.168.0.225.06_51_39
2015-06-07 06:51:39 /root/test_ping_192.168.0.245 /root/.gomi/2015/06/07/test_ping_192.168.0.245.06_51_39
2015-06-07 06:51:39 /root/test_ssh.sh /root/.gomi/2015/06/07/test_ssh.sh.06_51_39
2015-06-07 11:50:41 /work/test /root/.gomi/2015/06/07/test.11_50_41
2015-06-07 11:50:41 /work/test.list /root/.gomi/2015/06/07/test.list.11_50_41
2015-06-07 11:50:41 /work/test1 /root/.gomi/2015/06/07/test1.11_50_41
2015-06-07 11:50:41 /work/test123 /root/.gomi/2015/06/07/test123.11_50_41
2015-06-07 11:50:41 /work/test5 /root/.gomi/2015/06/07/test5.11_50_41

3.ゴミ箱から戻す

さて、それではゴミ箱からファイルを戻してみよう。
普通にファイルをmvで移すこともできるが、gomiにはゴミ箱から元のディレクトリに戻す機能がある。
以下のコマンドを実行し、ゴミ箱から元のディレクトリに戻すファイルを選択する。

gomi -r

対象となるファイルを「Enter」キーで選択すると、そのファイルが元の場所に移動される。
そのファイルの中身を調べたい場合には、「Ctrl + q」キーを入力することで、以下のようにクイックビューを開く事が出来る。

4.ゴミ箱から削除する

ファイルをゴミ箱からも削除する場合は、「gomi -r」の画面上で「Ctrl + _」キーを入力することで削除できる。
なお、この削除を行うとlogからもその痕跡が無くなるので注意。

う~ん、いいなぁこれ…
2年位したら、Ubuntuあたりに標準で乗ってそうな気もする。