it-swarm-tr.com

Linux'ta geri almamız var mı?

Bir toplu iş komut dosyasında birkaç dosyayı yeniden adlandırdım. Değişiklikleri yeniden adlandırmak zorunda kalmadan geri almanın bir yolu var mı?

Linux undoing için yerel bir yol sunuyor mu?

55
Lazer

Linux (diğer unices gibi) yerel olarak geri alma özelliği sağlamaz. Felsefe, eğer giderse, gitti. Önemli olsaydı, yedeklenmiş olmalıydı.

Eski sürümlerin kopyalarını otomatik olarak tutan bir Fuse dosya sistemi vardır: copyfs , tüm iyi dağıtımlarda kullanılabilir. Tabii ki, bu çok fazla kaynak kullanabilir.

Bu tür kazalara karşı korunmanın en iyi yolu bir sürüm kontrol sistemi kullanmaktır (cvs, Bazaar, darcs, git, Mercurial, Subversion, ...). Öğrenmek biraz zaman alır, ancak orta ve uzun vadede korkunç bir şekilde işe yarar.

Ne yazık ki hayır.

17
postfuturist

Hayır, herhangi bir Unix'te sihirli bir geri alma yoktur. Unix, ne yaptığınızı bildiğinizi varsayar. Geri alma desteği için bir VCS kullanın (metin düzenleyicinizde muhtemelen yerleşiktir).

Çoğu dosya sistemi bunu şeffaf bir şekilde yapma yeteneğine sahip değildir.

Mac ve pencerelerde zaman makinesi ve sistem geri yüklemesi sadece yedekleme/değiştirme kontrol sistemleridir.

10
xenoterracide

Komut satırında geri alma yoktur. Ancak, komutları rm -i ve mv -i. Bu size "emin misiniz?" soru komutu çalıştırmadan önce.

Bunun için bir başlangıç ​​komut dosyasına takma ad eklemek de mümkündür (ör. ~/.bashrc veya /etc/bash.bashrc):

alias remove='rm -i'
alias move='mv -i'

Düzenleme: aşağıdaki önerilere göre, varsayılan komutları takma adla tavsiyemi kaldırdım. Bunun yerine, şimdi yeni komutlar sunar).

8
vdboor

Linux/Unix sistemlerinin silme işleminin geri alınmamasının nedeni, çoğu dosya sisteminin bilgilerini saklama biçiminden kaynaklanmaktadır. Dosya meta bilgileri, diskin geri kalanındaki düğümlere referanslarla diskin önünde saklanır. Genellikle, çoğu dosya sistemi bu meta alandaki bir dosyaya 10 blok ayırır. İlk 7, ilk 7 inode anlamına gelir. Sekizinci ve 9'uncu, düğümlerin listesine (çift bağlantılı bloklar), 10'uncu ise liste listelerine (üçlü bağlantılı bloklar) gider. Bu, dosya sisteminden dosya sistemine (ext4, jfs, xfs, vb.) Değişir, ancak bu blok listeleri genellikle 2GB ile birkaç TB arasındaki dosya boyutlarını ele alabilir.

Ancak tüm bu bilgiler diskin önünde saklandığından, bir dosya silindiğinde, diskteki inode'lara ait oldukları meta verilere başvurmak için bir yol yoktur. Buna karşılık FAT32 ve NTFS, bazı üstbilgi bilgilerini gerçekte dosyaların kendileriyle birlikte saklar ve bir blok kümesinin hangi dosyaya ait olduğunu tanımlamayı kolaylaştırır (bu alan henüz yeni dosyalar tarafından geri kazanılmadığı sürece). Linux çalışmasında, bir şeyi sildiğinizde, verimlilik için yeni verilerin hemen üzerine yazılması neredeyse her zaman ilk şeydir.

4
djsumdog

Benim .bashrc'ye eklemek istediğim bir şey, bir kopyalama ve kaldırma işlevidir. Gibi bir şey:

cprm(){
    cp -p $1 ~/deleted/$1
    rm $1
}

Ama rm değil cprm yazma alışkanlığı almak zorunda.

Açıkçası sınırlı disk alanınız varsa silinen alanın üstünde kalmanız gerekecektir.

2
Deano

Gerçekten geri alma özelliğini istiyorsanız, kaynak denetimini kullanın. Subversion aslında tek bir kullanıcı makinesinde çok iyi çalışıyor. Ev sistemimdeki tüm kişisel dosyalarımı kontrol etmek için kullanıyorum. Felakete kadar sahte bir komut dosyası veya bir komut satırı yazım hatası olana kadar aşırıya kaçmış gibi görünüyor.

2
Stephen Jazdzewski

GitFS, sürümler arasında diffs değerini otomatik olarak hesaplayan ve bunlar arasında geri yükleme/gezinmeye izin veren Sigorta tabanlı bir dosya sistemidir.

Web sayfası: https://www.presslabs.com/gitfs

Dokümanlar: https://www.presslabs.com/gitfs/docs/usage/

1
test30