web-dev-qa-db-ja.com

ルートパーティションのゴミ箱はどこにありますか?

コマンドラインからファイルをゴミ箱に移動するにはtrash-putを使用します。最近、重要なものを誤って削除しないように、rmコマンドのエイリアスをtrash-putに変更しました。

しかし、今起こったのは、/var/logファイルシステムの空き容量を増やすために、/フォルダーからいくつかのファイルを削除する必要があったことです。私はSudoを使用してこれを行いました:

Sudo rm /var/log/somelog

#Above command is equivalent to: 
Sudo trash-put /var/log/somelog

これを行った後、ファイルがごみ箱に移動されている必要があるため、パーティションに回復された空き領域はありませんでした。ただし、ゴミ箱を確認したところ、ファイルがありませんでした。 .Trash-100パーティションに/フォルダがあるかどうかを確認しようとしましたが、それもありませんでした。

それで、私のゴミ箱に入れられたファイルはどこに行きましたか?そして、スペースを回復するためにそれを間引くことができるように、どうすればそれを見つけることができますか?

6
shivams

削除したファイルは、実際には別のプロセスによって開かれている可能性があります。その場合、そのプロセスがファイルへのハンドルを閉じると、ファイルスペースが使用可能になります。

これらのファイルはlsofで検索できます。

lsof |grep "var/log"|grep deleted
7
Lambert

Sudoを使用すると、エイリアスは呼び出されません。

$ alias a=ls
$ Sudo a
Sudo: a: command not found

これは、ファイルがゴミ箱に移動されるのではなく、実際に削除されることを意味します。

ファイルを開いたままにしているプロセスがある場合、それらに書き込むために、ファイルによって使用されたスペースは、それらのプロセスがファイルを閉じるか終了するまで再利用されません。

3
Kusalananda

trash-putのマンページ によると、trash-putはファイルをゴミ箱に置きます。これは FreeDesktop.orgのゴミ箱仕様 で定義されています。

ゴミ箱ディレクトリでは、ゴミ箱は次のようなフォールバックプロセスに従います。

  1. $XDG_DATA_HOME/Trashにあるホームトラッシュ。あなたの場合、それはrootの/root/Trashかもしれません。須藤が$XDG_DATA_HOMEを通過した可能性もあるので、自分のゴミ箱の下で探してみてください。使用されるのはメインのゴミ箱です。
  2. $XDG_DATA_HOMEと同じマウントルートを共有しないディレクトリの場合、マウントされたディレクトリの最上位ディレクトリにあるゴミ箱が使用されることがあります。
    1. $topdir/.Trash/$UIDを最初に試すことができます。
    2. テストが失敗した場合(例:$topdir/.Trashが存在しない場合)、$topdir/.Trash-$UIDを使用します。あなたの場合、SudoがUIDをrootにするので、/.Trash-0で探してみてください。

更新:

「ルートトラッシュ」をビンギングすると、さらに多くのことができます。

本当に古いチュートリアル からgksudo nautilus '/root/.Trash/'に言及し、ルートの.Trashの下にある$XDG_DATA_HOME(fd.oのようにTrashの代わりに)ディレクトリまずは良いオプションです。

アスカーのリムーバブルディスク用に.Trash-rootが作成される 中国語での本当に古い質問 によると、一部の実装では数値UIDの代わりにユーザー名を使用しています。

2
Arthur2e5

コメントと回答で指摘されているように、問題はエイリアスの拡張にあります。

しかし、これには解決策があります。

すべてのエイリアスでSudoを使用したい場合(したがって、@ Kusalanandaによって指摘された問題を回避する場合)、次のエイリアスをエイリアスファイルに追加できます。

alias Sudo='Sudo '

これを実行した場合、Sudo rmは予想どおりSudo trash-putに展開されます。

コマンドの最初の単語としてのみ機能するエイリアスに関する@Dubuからのコメントに答えるには、フラグ-gをエイリアス定義に追加すると、グローバルになり、コマンド位置になくても機能します。 rmエイリアスでこれを行うことができます。ただし、Sudoを使用して他の予期せぬ事態を招きたくない場合は、最初の方法の方が適切です。これは、たとえば、パイプコマンドのエイリアスを設定する場合に関連性があります(例:alias -g pl='| less')。

trash-cliSudoと一緒に使用した場合のゴミ箱の場所については、@ Arthur2e5がこれに答えます。私は単にそれを追加できます。私の場合、場所は次のとおりです。

/home/.Trash-0

0
prosoitos