$ HOME dizinini temizle


17

Birkaç yıl boyunca, $HOMEdizinimde çok sayıda gizli dosya ve dizin ortaya çıktı.

Gereksiz olanları sürekli olarak silmek istiyorum.

Hangi uygulamaların bu gizli dosyaları ve dizinleri oluşturduğunu nasıl öğrenebilirim?

Gizli dosyaları ve dizinleri kaldırmanın güvenli olduğundan ve önemli bir şeyin kaybolmayacağından ve bunlara bağlı hiçbir şeyin çalışmayı bırakmayacağından nasıl emin olabilirim?


2
Klasörleri ve dosyaları hangi uygulamaların oluşturduğunu belirlemek zor olabilir. Genellikle iyi geliştiriciler tarafından yapılan uygulamalarla ilişkili dosyaları ilişkilendirmek kolaydır, ancak bu her zaman böyle değildir. İyi bir cevap bulursanız, bunun ne olduğunu bilmek isterim.
0xSheepdog

2
@ 0xSheepdog gelecek için denetlenir - tarih için, hemen hemen hiçbir şey.
Jenny D

Dosyaları kaldırmadan önce yedeklediğinizden emin olun. (Bu, dosyaları geri yükleyebileceğinizi doğrulamayı içerir.)
Jenny D

1. Linux mu kullanıyorsunuz? Hangi çekirdek sürümü? (sadece büyük / küçük lütfen) 2. SELinux etkin mi yoksa etkinleştirebilir misiniz? 3. Kök erişiminiz var mı?
Otheus

Yanıtlar:


15

Bunları geçici olarak değiştirebilirsiniz.

cd ~
mkdir .trash
find . ! -name . -prune ! -type d -atime +365 -exec \
    sh -c 'touch -a -- "$@"
           mv -- "$@" ~/.trash
    ' --   {} +

Bu, $HOMEbir yıl boyunca erişilmeyen alt dizinlere yinelenmeden dizininizdeki tüm dosyaları bulur . Şu anda hepsinin erişim zamanını güncelleyecek ve daha sonra hepsini adlandırılmış bir dizine taşıyacaktır .trash. Çalıştırdığınız zaman ile eski dosyaları silmeye karar verdiğiniz zaman arasında herhangi bir sorunla karşılaşırsanız, ~/.trashbazılarını geri taşımayı deneyebilir ve çöp kutusuna koyduğunuz bunlardan herhangi birinin neden olup olmadığını görebilirsiniz.


Bu teknik olarak soruyu cevaplamasa da, bunun oldukça iyi bir çözüm olduğunu düşünüyorum.
Jesse K

1
- @JesseKeilson ben düşünüyorum yok : teknik soruya cevap nasıl emin gizli dosyaları ve dizinleri ve kaybolur önemli şey ve çalışma durmayacak onlara bağlı hiçbir şey kaldırmak için güvenli olabilir?
mikeserv

1
Bazı dosya sistemleri "noatime" seçeneği ile monte edilir. Attime, mtime veya ctime olsa bile asla değiştirilmeyecektir. Bu, bulmanızı son kullanılan dosyaları yanlış bir şekilde taşımanıza yönlendirir.
Adrien M.

@AdrienM. - bu doğru. genel olarak, bununla temasa geldiğim her aklı başında kullanır relatime. from man mount:: relatimeZamanı değiştirmek veya değiştirmek için inode erişim sürelerini güncelleyin. Erişim süresi, yalnızca önceki erişim süresi geçerli değiştirme veya değiştirme süresinden daha erken ise güncellenir. (Benzer etmek noatime, ancak kesilmez muttveya diğer uygulamalar dosya ancak değiştirilmiş son zamandan bu yana okundu eğer ihtiyaç bilmek söyledi.) Neyse kullanımı ve -mve -mtime/ modtime w işe. ya da ne istersen.
mikeserv

Sorunun ' ve dizinler ' kısmına cevap vermez . Bunun için her bir .directory'de yürümeniz ve tüm dosyaların bir yıldan eski olduğunu kontrol etmeniz gerekir
naught101

6

Sisteminizin kökü iseniz, dosyalara kimin / ne zaman / neyin eriştiği / yaratıldığı / değiştirildiği hakkında maksimum bilgiye sahip olmak için denetim çekirdeği özelliğini kullanabilirsiniz.debian aromalı örnekler için bu eğiticiye bakın

Kök erişiminiz yoksa , homedir'inizde lsof & grep dosyalarını çalıştırmak için crontab veya sonsuz döngü + uyku içeren bir komut dosyası kullanabilirsiniz. Lsof'un kılavuz sayfasına bakın . Ancak, yalnızca dosya açtığınız anda dosyalanmış bir açıklayıcısı olan uygulamalarınızı görüntüler. Bir uygulama bir dosyayı açar, düzenler ve kapatırsa, bu değişikliği lsof'ta görmezsiniz.

böyle bir astar işi yapmalıdır: lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

Başka bir yol, bir dosyaya ne zaman erişildiğini kontrol etmek için inotify çekirdek API'sini kullanmaktır . Ne yazık ki, bu zaman uyumsuz bir sistemdir ve "ne uygulaması", "tam olarak ne zaman", "hangi kullanıcı" gibi ayrıntılara sahip olmayacaksınız. Yalnızca "bu dosya değiştirildi / erişildi ..." hakkında bir geri çağrınız olacak. Bazı uygulamalar (Inotify, FAM, gamin), api'ye kolay erişim sağlar


Sadece inotifytetiklemek için kullanmaya çalıştım lsof. Sistem bu fikrin işe yaraması için çok hızlıdır: lsof çalıştırılmadan önce işlem genellikle gitti veya dosyayı kapattı. Bazı durumlarda, bu hala işe yarayabilir, ancak muhtemelen çok azdır.
Otheus

auditd Çekirdekteki belirli kod yolunu kullandığından, hiçbir ayrıntıyı kaçırmadan tüm ayrıntıları sağlayan tek sistemdir. Diğer tüm araçlar, bilgileri sonlandıracak, süreç sonlandırılacak / fd'yi kapatmış olacak.
Adrien M.

Kabul. Sadece teste inotify yapıyordum ve burada gereken işi gerçekten yapmayacağını onaylıyordum.
Otheus

3

atimeUzun süre kullanılmayan dosyaları arayabilir ve kaldırabilirsiniz (sisteminizi atime kullanmamaya yapılandırmadıysanız), ancak bu oldukça risklidir ( tmpreaperbu yöne gitmek isteyip istemediğinize bakın ).

Bunun yerine , cruft kaldırmak için etkileşimli bir GUI programı olan Bleachbit'i öneririm .

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.