Linuxのゴミ箱コマンドを元に戻す


24

ターミナルで行われた操作、たとえばファイルの削除を元に戻すことはできますrmか?

得られたソリューション:

  1. エイリアス
  2. 元に戻すユーティリティ
  3. バックアップユーティリティ
  4. LibTrash
  5. バージョニング(FUSE)

1
オンrm:ファイルをからリンク解除しますinode。質問:「rmコマンドが発行されたとき、ファイルはどこに行くのか」-> unix.stackexchange.com/questions/10883/…も読みやすいでしょう。
エルチ

回答:


62

ターミナルでのすべての操作に対する一般的な「元に戻す」はありません。使用後にファイルを回復したい場合は、rm回復ソフトウェアを調べる必要があります。

将来の間違いを防ぐためのオプションは、aliasファイルを削除する代替コマンドのes を作成することです。それらをあなたに追加して、~/.bashrc代わりにそれらを使用する習慣に入ってくださいrm

  1. エイリアスrmi = 'rm -i'

    を使用する場合rmi、今後の削除の確認を求められます。コマンドyを発行した直後に押すという習慣を身に付けないようにしてくださいrmi。そうすると目的が損なわれます。

  2. trshターミナルのコマンドで削除されたファイルをごみ箱に移動することもできます(KDEおよびGnomeで):

    alias trsh='mv --target-directory="$HOME/.Trash"'
    

    を使用する場合trsh、限定された「復元」機能が使用できます。それに注意してください

    trsh dir1/file1 dir2/file1
    

    それでも回復不能なデータ損失が発生する可能性があります。


3
+1よりもはるかに良い答えを得るために+1 =)
How-To Geek

9
2番目のエイリアスは非常にスマートです。+1。
リラナ

3
trash(){mv $ @〜/ .Trash; }#エイリアスではなくbash関数。私見では、rmの予想される動作を変更することは悪い考えです。
リチャードホ

20
エイリアシングとリスクrmにはrm -i、それはあなたを与えることをあなたはセーフティネットに慣れるということです。そして、あなたはそのエイリアスを持っていない別のマシン、...上に行く
Dentrasi

3
RichardとDentrasiが言及した理由のために、カスタム関数を作成するか、別名rmi-> を作成することを好みますrm -i。既存のプログラムに別名をつけて邪魔するのは本当に間違いです。
テレマコス

6

コマンドライン用のごみ箱はありません。

さまざまな元に戻すユーティリティのいくつかを試すことができますが、それらが機能するという保証はありません。


はい、コマンドラインにはゴミがあります。別の答えのtrash-cliを参照してください。
Sparhawk

Trash-cliは非常に優れています:)。Trashlibを使用します。単にファイルを移動するよりも優れています。
m3nda

5

guiを実行するときにKDEを使用する場合、trash-cliを使用できます。これは、KDEのゴミ箱機能を使用して削除/復元するコマンドラインユーティリティです。


1
trash-cliはGNOMEのゴミ箱でも動作し、rmオプションの互換性を提供するように設計されています(エイリアシング用)。
アンドレアフランシア

alias rm=trash典型的なコマンドラインのねじ込みに元に戻すボタンが付いていることを忘れないでください。
ライアンC.トンプソン

alias rm=trash誰か他の人のシステムをいつか使用して忘れる(またはssh)可能性がある場合、潜在的に危険だと思います。のtrash代わりに書くことに慣れる方がずっと安全ですrm
Sparhawk

4

あなたが作ることができるrmの別名trashコマンドを(あなたがインストールする必要がありますtrash最初。)あなたにこれを追加します~/.bashrc

alias rm='trash'

alias rm='mv --target-directory=$HOME/.Trash'〜/ .Trashはgnomeのゴミ箱ではないため、これは望ましい方法です。trash実際のごみ箱フォルダがどこにあるかを把握する方が良いです。

ところで、私はこれをコメントで投稿したでしょうが、十分な担当者がいません。


5
「〜/ .Trashはgnomeのゴミ箱ではないため」の+1。ただし、rmをゴミ箱にエイリアスすることもできません。必要な場合は、rmではなくゴミ箱を使用する必要があります。
nagul 09

確かに、しかし一部の人々にとっては古い習慣は一生懸命に死ぬ。
アルビンロウ

「rmtrash」は別のオプションです。
イタチ

3

まだ2つの技術的な解決策が挙げられていません。

  1. libtrash:シェルにプリロードできる動的ライブラリで、システムコールの削除/削除をインターセプトし、代わりにゴミ箱フォルダーに移動します(エイリアスに似ていますが、プリロードされたときにすべてのアプリケーションで動作します)。
  2. バージョン管理ファイルシステム。ファイルを削除(または編集、コピー、または...)した場合、単に古い状態に戻すことができます。これは、FUSEファイルシステムとそのバージョン管理ファイルシステムの 1つで実行できます

3

ここには、対処する価値のある大きな質問があります。シェルコマンドはおしゃべりではなく(必要なことを再確認しません)、彼らはあなたが何をしているのかを知っていることを期待します。これはそれらが設計される方法の基本です。これは機能であり、バグではありません。

このようなコマンドを使用するとマッチョな人もいますが、これはかなりばかげていると思いますが、危険を理解すること重要です。rootでなくても、ターミナルで多大な損害を与えることができます。おそらく本当に気にかけていると思いますrmが、「ターミナルで行われた操作を元に戻すことができます」と言ったので、これは言う価値があると思いました。一般的な答えはいいえ、あなたはできません。


2

オプション1:ext2ファイルシステムからUndelete Linux Filesを参照してください。このページはLunetIX社のSebastian Hetzeによって書かれたプログラムを指します。このプログラムは(タイトルが示すように)ext2ファイルシステムから最近削除されたファイルを復元します。使用例:

# undelete -d /dev/hdc3 -a 10

警告:

  • 元のWebサイトはなくなりました。上記のリンクは、インターネットアーカイブへのリンクです。
  • サイトは英語とドイツ語が混在しています。
  • 前述のように、このツールはext2ファイルシステム専用に設計されています。他の種類のファイルシステムでは動作しない可能性があります。特に、ext N以外のものではありません。

オプション2:マシン上でrsnapshot(rsync)を実行して、選択したフォルダーのスナップショットを1時間ごとに作成します。これは、1時間ごと、2時間ごと、またはCRONに指示するものごとに増分的に行われます。1日が経過すると、これらのスナップショットは1つの毎日のスナップショットにリサイクルされ、7日後には毎週などにリサイクルされます。これにより、1時間ごとに約1か月ほど前に戻ることができます。変更されないファイルへのシンボリックリンクを作成するので、ディスクスペースにはかなり適しています...


明確にするために、#1はext2ファイルシステムに固有です。ext3ファイルシステムでは機能しません。
nagul 09


1

ext2には元に戻すユーティリティが存在しますが、他のほとんどのLinuxファイルシステムは石器時代に行き詰まっており、高度なユーザビリティ機能はありません。ファイルを二度と削除しないように十分なスペースがある巨大なドライブを考慮した悲しい事態は一般的です。

そのため、次の3つの選択肢があります。

  1. たとえば、次のようなコマンドを使用して、定期的にバックアップを実行します。

    rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

  2. gitすべての作業などにバージョン管理ツールを使用します。これはrm -r、リポジトリを破壊するクレイジーからは保護されませんが、git rmnot raw を使用するため、通常のトラブルから保護されますrm

  3. 余分な注意してくださいとであまり信用していないrm -itrash-cliと友人は、ほとんどのデータとして、あなたは、シェルに失うことになるあなたの意志ではない失う偶然のことでrmはなく、誤った方向に導かパイプ、入力ミス出力ファイル、誤って誘導することによりmvとか、つまり、上書きされます物事データを削除するだけでなく、

安全性を最大限に高めるには、3つすべてを実行してください。


ext2をモダンと呼ぶのはとても愉快です。新しいファイルシステムはext2 / 3よりも複雑なオンディスクフォーマットを使用し、削除するファイルを見つけることができる場所を見つけやすくする必要がありました。彼らは彼らが気にするもののバックアップを作成する人々のために設計されています。ところで、私は通常何も壊したくないので、私は常にmvとcp -iを使用します。私は通常rm -iにエイリアスされたrmを持っているので、\ rmと入力しますが、その質問には答えたくありません。
ピーターコーデス

0

これを確認してください...役立つかもしれませんhttp://artmees.github.io/rm/

あなたがしたと仮定します

rm very_important_file

ターミナルから。このファイルの回復は退屈で、常に成功するとは限りません

代わりに、上記のスクリプトを使用した場合。あなたはこれを心配する必要はありません

rm very_important_file
mv very_important_file ~/.Trash/

同等です。スクリプトはより多くのケースを処理し、システムrmをまったく変更しません。これは、ユーザーのローカルbinフォルダーに配置されるため、システムrmをシャドウイングしますが、影響を与えたり、使用を無効にしたりしないためです。

これは洗練されたエイリアシングアプローチですが、機能を失うことはありません


1
これが何をするのか、それがどのように質問に当てはまるのかについての説明を加えたり、例を加えたりすることができれば良いと思います。
slhck


0

私にとっては(opensuse leap 42.2、NTFSペンドライブ)PhotoRec-testdiskクリエーターも-働きました:)しかし、ファイル名は回復していません。

PhotoRecは、ビデオ、ドキュメント、アーカイブなどの失われたファイルをハードディスク、CD-ROM、および失われた写真(写真の回復名)からデジタルカメラメモリから回復するように設計されたファイルデータ回復ソフトウェアです。PhotoRecはファイルシステムを無視し、基礎となるデータを追跡するため、メディアのファイルシステムがひどく破損または再フォーマットされた場合でも機能します。

openSUSEの標準リポジトリを使用してインストールしました

命令


1
スーパーユーザーへようこそ!お読みくださいソフトウェアをお勧めする方法のために最低限必要な情報や、スーパーユーザーにソフトウェアをお勧めする方法についての提案。提供されたリンクが壊れていても有用な回答を維持するには、これらの詳細を回答に編集する必要があります。
私は、モニカを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.