trash-cli で cli でもゴミ箱利用

rm コマンドはとても強力です．バックアップもなく誤って削除したファイルは復旧できない可能性が高いです．
そこで rm の alias に rm -i を指定して確認メッセージを出すなどしている環境もありますが，いつも使っていると手癖で即削除してしまったりして確実ではありません．GUI環境のファイラーなどではゴミ箱機能が使えて削除してもゴミ箱を空にするまで復元が可能です．
これをcuiでも利用できる trash-cli というツールがあります．デスクトップと共通(freedesktop.org trashcanと共通)のゴミ箱が使えて便利です．

GitHub – andreafrancia/trash-cli: Command line interface to the freedesktop.org trashcan.

trash-spec

削除してしまったファイルを復元したい場合なるべく早く削除したファイルシステムを umount or mount -o ro してファイル復元ツールを試してみるともしかしたら復元できるかもしれません．Debian の場合 forensics-all/forensics-extra pkg 等を覗いてみると様々なツールが見つかると思います．(例えばext3/ext4ファイルシステムでの復元ツールのextundeleteや汎用のscalpel等)

Debian — stretch の forensics-all パッケージに関する詳細

Debian — stretch の forensics-extra パッケージに関する詳細

導入

$ sudo apt install trash-cli
$ dpkg -L trash-cli|grep bin/
/usr/bin/restore-trash
/usr/bin/trash
/usr/bin/trash-empty
/usr/bin/trash-list
/usr/bin/trash-put
/usr/bin/trash-rm

trash ゴミ箱に捨てる

$ touch hoge #ファイル作成
$ trash hoge #ファイルを捨てる
$ mkdir -p hoge/fuga/piyo #ディレクトリ作成
$ trash hoge #ディレクトリを捨てる

trash-list ゴミ箱の中を見る(同じ場所同じ名前のファイルもそれぞれ管理される)

$ trash-list | grep hoge
2018-09-11 05:36:19 /home/matoken/tmp/hoge
2018-09-12 08:57:31 /home/matoken/tmp/hoge
2018-09-12 08:37:09 /home/matoken/tmp/hoge
2018-09-12 08:57:35 /home/matoken/tmp/hoge
2018-09-12 08:36:56 /home/matoken/tmp/hoge
2018-09-11 05:36:34 /home/matoken/tmp/hoge

trash-empty ゴミ箱を空にする

$ trash-empty
$ trash-list

restore-trash 対話的にファイルを復元する

$ restore-trash
0 2018-09-14 05:15:11 /home/matoken/tmp/piyo
1 2018-09-14 05:13:22 /home/matoken/tmp/hoge
2 2018-09-14 05:15:11 /home/matoken/tmp/fuga
What file to restore [0..2]: 0 #復元したいファイルの番号を指定

trash を rm の alias にする(alias にてオプションを付与してオプションは無視するようになっている)

$ alias rm='trash'
$ rm hoge
$ rm -rf dir

という感じで簡単に使えます．sudo を使うことも可能です．ゴミ箱の実体は環境によりますが，手元の環境では ~/.local/share/Trash/ 以下でした．このあたりは以下のページが参考になると思います．

basedir-spec

ゴミ箱を空にしないとどんどんファイルは溜まっていきます．autotrash を使って掃除するのがおすすめです．

autotrash でゴミ箱を自動清掃 – matoken’s meme

＜追記＞

Google+のコメントでmasakaさんに教えてもらったのですが，trash-empty 日付 と日付を指定することで日付以上の日数が経過したファイルが削除できるようです．日付指定だけならautotrash を導入しなくてもいいですね．

“trash-cli で cli でもゴミ箱利用 – matoken’s meme” https://matoken.org/blog/2018/09/1…​

Masakazu Takahashi

ちなみにtrash-cliでも`trash-empty 30`とか実行すると、削除して30日超のファイルをゴミ箱から消してくれます。

man trash-emptyより

ARGUMENTS
To remove all trashed files, use 'emtpy-trash'.

To remove files that have been in the trash more than a given number of
days, use 'trash-empty x', 'x' representing the number of days.

＜／追記＞

環境

$ dpkg-query -W trash-cli
trash-cli 0.12.9.14-2.1
$ lsb_release -d
Description: Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

＃trash-cli は現在 0.17.1.14 で 0.12.9.14 のリリース日は 15 Sep 2012 となっている．

#856814 – Package trash-cli needs to be updated with newest version – Debian Bug report logs