Linux çöp komutunu geri al


24

Bir terminalde yapılan işlemleri, örneğin dosya silme işlemini geri alabilir miyiz rm?

Elde edilen çözümler:

  1. Aliasing
  2. Undelete yardımcı programları
  3. Yedekleme yardımcı programları
  4. Libtrash
  5. Sürüm Oluşturma (FUSE)

1
On rm: Bir dosyayı ondan ayırırinode . Soru: " rmkomut verildiğinde dosyalar nereye gidiyor " -> unix.stackexchange.com/questions/10883/… sizin için iyi bir okuma olabilir.
erch

Yanıtlar:


62

Terminaldeki her işlem için genel bir "geri alma" yoktur. Bir dosyayı kullandıktan sonra kurtarmak rmistiyorsanız, kurtarma yazılımına bakmanız gerekir.

Gelecekteki hatalardan aliaskorunmak için bir seçenek, dosyaları kaldırmak için alternatif komutları kullanmaktır. Bunları kendinize ekleyin ~/.bashrcve yerine kullanma alışkanlığı edinin rm.

  1. takma ad rmi = 'rm -i'

    Eğer kullanırsanız rmi, gelecekteki siler onayı için istenir. Amacı yeneceği için, ybir rmikomut verdikten hemen sonra basma alışkanlığını geliştirmekten kaçının .

  2. Komutla silinen dosyaları trshterminaldeki geri dönüşüm kutunuza da taşıyabilirsiniz (KDE ve Gnome'da):

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

    Eğer kullanırsanız trsh, bir sınırlı "geri" yeteneğine sahip olacaktır. Dikkat et

    trsh dir1/file1 dir2/file1
    

    hala kurtarılamaz veri kaybına neden olabilir.


3
Benimkinden çok daha iyi bir cevap için +1 =)
Nasıl Yapılır Geek

9
ikinci takma ad çok, çok akıllıdır. +1.
LiraNuna

3
trash () {mv $ @ ~ / .Trash; } # bash işlevi, diğer ad değil. Rm'nin beklenen davranışını değiştirmek kötü bir fikirdir, IMHO.
Richard Hoskins

20
Aliasing ile risk rmiçin rm -io size verdiği Eğer güvenlik ağı alışması olmasıdır. Sonra o takma adı olmayan başka bir makineye
geçersiniz

3
Richard ve Dentrasi'nin bahsettiği nedenlerden dolayı, özel bir işlev oluşturmayı veya takma adı kullanmayı tercih ederim rmi-> rm -i. Bu sadece üzerinde takma yaparak mevcut bir programın önüne geçmek için bir hata.
Telemachus

6

Komut satırı için geri dönüşüm kutusu yok.

Geri alınmamış çeşitli yardımcı programları deneyebilirsiniz, ancak işe yarayacağının garantisi yoktur.


Evet, komut satırı için bir çöp kutusu var. Bir başka cevabın içindeki çöp kutusuna bakın.
Sparhawk,

Trash-cli çok iyidir :) ve basitçe dosyaları taşımaktan daha iyi, Trashlib kullanıyor.
m3nda

5

Bir GUI çalıştırdığınızda KDE kullanıyorsanız, trash-cli kullanabilirsiniz. Bu, KDE çöp kutusu olanaklarını kullanarak silmek / geri yüklemek için komut satırı yardımcı programıdır.


1
trash-cli, GNOME çöpleriyle de çalışır ve rm seçenekleri uyumluluğu sağlamak için tasarlanmıştır (takma için).
Andrea Francia

Unutmayın alias rm=trashbu yüzden tipik komut satırı vida-up geri alma düğmeleri ile geldiğini.
Ryan C. Thompson,

Bence alias rm=trashpotansiyel olarak tehlikeli, eğer bir gün bir başkasının sistemini kullanacak ve unutacaksın (veya ssh). trashBunun yerine sadece yazmaya alışmak çok daha güvenli rm.
Sparhawk

4

Sen yapabilir rmiçin bir takma ad trashkomutu (Sen yüklemeniz gerekir trashilk.) Adresinden Müşteri bu ekleyin ~/.bashrc:

alias rm='trash'

alias rm='mv --target-directory=$HOME/.Trash'~ / .Trash, gnome için çöp kutusu DEĞİL olduğundan beri tercih edilir . trashAsıl çöp kutusu klasörünün nerede olduğunu bulmak için IMHO iyidir .

btw Ben bunu bir yorumda göndermiş olurdum ama yeterince bilgim yok.


5
+1 "çünkü ~ / .Trash, gnome için çöp kutusu DEĞİLDİR." Bununla birlikte, rm'nin de çöpe atılmaması gerekir. İstediğin buysa, sadece rm yerine çöp kullanmalısın.
nagul,

Doğru, ama bazı insanlar için eski alışkanlıklar zor ölür.
Alvin Row

'rmtrash' başka bir seçenektir.
Itachi

3

İki teknik çözüm daha henüz adlandırılmadı:

  1. libtrash : Kabukunuzda , silme / silme çağrılarını engelleyen ve dosyaları bunun yerine bir çöp klasörüne taşıyan (takma adlar gibi, ancak önyüklendiğinde herhangi bir uygulama için çalışır) çalışan dinamik bir kütüphanedir.
  2. Bir sürüm dosyası sistemi. Bir dosyayı silerseniz (veya düzenlerseniz ya da kopyalarsanız veya ...), eski bir duruma geri dönebilirsiniz. Bu bir FUSE dosya sistemi ve sürüm dosya sistemlerinden biriyle yapılabilir .

3

Burada ele alınması gereken daha büyük bir soru var. Shell komutları konuşkan değil (ne istediğinizi iki kez kontrol etmiyorlar) ve ne yaptığınızı bilmenizi bekliyorlar. Bu, nasıl olduklarının temelini oluşturur. tasarlandıkları . Bu bir özellik, böcek değil.

Onlar oldukça saçma olduğunu düşünüyorum böyle komutları kullandığınızda Bazı insanlar Macho hissediyorum, ama olduğunu tehlikeleri anlamak önemlidir. Kök olmasanız bile terminalde büyük miktarda hasar verebilirsiniz. Sanırım muhtemelen gerçekten umursuyordunuz rm, ancak "Terminalde yapılan işlemleri geri alabilir miyiz" dediğinizden, bunun söylemeye değer olduğunu düşündüm. Genel cevap hayır, yapamazsın.


2

Seçenek 1: Bkz . Ext2 Dosya Sisteminden Undelete Linux Dosyaları . Bu sayfa, LunetIX şirketinin Sebastian Hetze'sinin yazdığı bir programa işaret eder. Örnek kullanım:

# undelete -d /dev/hdc3 -a 10

Uyarılar:

  • Orijinal web sitesi gitti. Yukarıdaki bağlantı, İnternet Arşivi'ne aittir.
  • Siteler İngilizce ve Almanca'nın bir karışımı içinde.
  • Yukarıda belirtildiği gibi, araç ext2 dosya sistemi için özel olarak tasarlanmıştır. Başka herhangi bir dosya sistemi türünde çalışmak mümkün değildir; özellikle ext N dışındakiler için değil .

Seçenek 2: Makinemde çalışan rsnapshot'ım (rsync) var, bu da seçilen klasörlerin saatlik görüntüsünü yapıyor. Bunu her saat, 2 saatte bir ya da CRON'a ne derseniz deyince yapın. Tam bir günün ardından bu anlık görüntüleri bir günlük anlık görüntüye geri dönüştürür ve haftada 7 gün sonra böyle devam eder. Bu beni her saat yaklaşık bir ay ya da öylesine geri gidebilmemi sağlıyor! Hiç değişmeyen dosyalara sembolik bağlantılar oluşturduğu için disk alanı ile oldukça iyi ...


Sadece netleştirmek için # 1, ext2 dosya sistemlerine özgüdür. Bir ext3 dosya sisteminde çalışmaz.
nagul,


1

Ext2 için silinmemiş araçlar var, ancak diğer Linux dosya sistemlerinin çoğu Taş Devrinde kaldı ve gelişmiş bir kullanılabilirlik özelliğine sahip değil. Bir dosyayı bir daha silmek için yeterli alana sahip olan devasa diskleri düşünen üzücü durumlar olağandır.

Böylece üç seçenekle sıkıştınız:

  1. Düzenli olarak yedekleme yapın, örneğin:

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

  2. gitTüm işiniz için olduğu gibi bir sürüm kontrol aracı kullanın . Bu rm -r, depoyu öldüren bir çılgınlığa karşı koruma git rmsağlamazken, çiğ kullanmayacağınız için düzenli sorunlara karşı koruma sağlar rm.

  3. Çok dikkatli olun ve çok fazla güvenmeyin rm -i, trash-cliarkadaşlar, kabukta kaybedeceğiniz çoğu veri kazara rmdeğil, yanlış yönlendirilmiş borular, yanlış yazılmış çıktı dosyaları, yanlış yönlendirilmiş mvşeyler ve üzerine yazılacak şeyler Verilerinizi silin, yalnızca silin.

Maksimum güvenlik için üçünü de yapın.


Ext2'yi modern olarak adlandırmak oldukça eğlenceli. Yeni dosya sistemleri, ext2 / 3'ten daha karmaşık disk formatları kullanır ve silinecek dosyaları bulabileceğiniz kolayca bulunabilen konumlardan vazgeçmek zorunda kalır. İlgilendikleri şeylerin yedeğini alan insanlar için tasarlanmıştır. Btw, her zaman mv ve cp -i kullanıyorum, çünkü normalde hiçbir şey clobber yapmak istemiyorum. Normalde \ rm yazarım, çünkü rm -i'ye de rm ismini verdim, fakat sorusuna cevap vermek istemiyorum.
Peter Cordes,

0

Bunu kontrol edin ... yardımcı olabilir http://artmees.github.io/rm/

varsayalım

rm very_important_file

Terminalden Bu dosyayı kurtarmak sıkıcı ve her zaman başarılı bir işlem değildir

bunun yerine söz konusu betiği kullandıysanız. bu konuda endişelenmene gerek yok çünkü

rm very_important_file
mv very_important_file ~/.Trash/

eşdeğerdir. komut dosyası daha fazla durum ele alır ve sisteminizi hiçbir şekilde değiştirmez rmve bunun nedeni kullanıcının yerel bin klasörüne yerleştirilmesidir, böylece sistemin rm'sini gölgelendirir ve henüz etkilemez veya kullanmayı devre dışı bırakmaz

bu, rafine edilmiş bir takma yaklaşımdır ancak hiçbir özelliği kaybetmeden


1
Bunun ne olduğu ve soruya nasıl uygulanacağı hakkında bir açıklama eklerseniz, belki bir örnek ekleyebilirseniz, iyi olur.
slhck


0

Benim için (opensuse 42.2 sıçrama, NTFS pendrive) PhotoRec - ayrıca testdiskyaratıcılar tarafından - çalıştı :) Ancak, dosya adlarını kurtarmadı.

PhotoRec, sabit disklerdeki video, belgeler ve arşivler, CD-ROM'lar ve kaybolan resimleri (dolayısıyla Photo Recovery adı) dijital kamera belleğindeki kayıp dosyaları kurtarmak için tasarlanmış dosya veri kurtarma yazılımıdır. PhotoRec dosya sistemini göz ardı eder ve altta yatan verilerin peşinden gider, bu nedenle medyanızın dosya sistemi ciddi şekilde hasar görmüş veya yeniden biçimlendirilmiş olsa bile çalışmaya devam eder.

OpenSUSE’deki standart depoları kullanarak kurdum

talimat


1
Süper Kullanıcıya Hoşgeldiniz! Lütfen okuyun yazılımını önerme için gerekli minimum bilgi Super User yazılımı tavsiye için nasıl ve öneriler. Cevabınızı faydalı tutmak için, verilen bağlantıların kopmasına rağmen bu ayrıntıların cevabınıza göre düzenlenmesi gerekir.
Tekrar söylüyorum Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.