Wyczyść katalog $ HOME


17

W ciągu kilku lat w moim $HOMEkatalogu pojawiło się wiele ukrytych plików i katalogów.

Chciałbym ciągle usuwać niepotrzebne.

Jak mogę dowiedzieć się, które aplikacje utworzyły te ukryte pliki i katalogi.

Jak mogę się upewnić, że usunięcie ukrytych plików i katalogów jest bezpieczne i że nic ważnego nie zostanie utracone i nic zależnego od nich nie przestanie działać?


2
Ustalenie, które aplikacje utworzyły foldery i pliki, może być trudne. Zwykle korelowanie plików powiązanych z aplikacjami stworzonymi przez porządnych programistów jest proste, ale nie zawsze tak jest. Jeśli znajdziesz dobrą odpowiedź, chciałbym wiedzieć, co to jest.
0x Owczarek

2
@ 0x Owczarek kontrolowany na przyszłość - dla historii praktycznie nic.
Jenny D,

Upewnij się, że masz kopię zapasową plików przed ich usunięciem. (Obejmuje to sprawdzenie, czy można przywrócić pliki.)
Jenny D

1. Czy używasz Linuksa? Która wersja jądra? (tylko główne / drobne). 2. Czy SELinux jest włączony, czy możesz go włączyć? 3. Czy masz dostęp do roota?
Otheus

Odpowiedzi:


15

Możesz je tymczasowo usunąć.

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

W ten sposób znajdziesz wszystkie pliki w twoim $HOMEkatalogu - bez rekurencji w katalogach potomnych - do których nie masz dostępu od roku. Zaktualizuje teraz czas dostępu do nich wszystkich, a następnie przeniesie je wszystkie do katalogu o nazwie .trash. Jeśli napotkasz jakiekolwiek problemy między momentem uruchomienia a czasem, w którym zdecydujesz się rozpocząć usuwanie starych plików ~/.trash, możesz spróbować przenieść niektóre z nich z powrotem i sprawdzić, czy przyczyną jest któryś z nich umieszczony w koszu.


Chociaż technicznie to nie odpowiada na pytanie, myślę, że to całkiem dobre obejście.
Jesse K

1
@JesseKeilson - myślę, że to jest technicznie odpowiedzieć na pytanie: Jak mogę mieć pewność, że jest to bezpieczne usunięcie ukrytych plików i katalogów i nic ważnego zostaną utracone i nic w zależności od nich nie przestanie działać?
mikeserv

1
Niektóre systemy plików są montowane z opcją „noatime”. Atime nigdy nie będzie modyfikowany, nawet jeśli mtime lub ctime są. Spowoduje to, że znalezisko nieprawidłowo przeniesie ostatnie pliki.
Adrien M.

@AdrienM. - to prawda. w zasadzie jednak każdy rozsądny fs, z którym mam kontakt relatime. from man mount: relatimeZaktualizuj czasy dostępu do i-węzłów w celu modyfikacji lub zmiany czasu. Czas dostępu jest aktualizowany tylko wtedy, gdy poprzedni czas dostępu był wcześniejszy niż bieżący czas modyfikacji lub zmiany. (Podobne do noatime, ale nie psuje się muttani inne aplikacje, które muszą wiedzieć, czy plik został odczytany od ostatniej modyfikacji). W każdym razie użyj -mi -mtimedziałaj z modtime. lub cokolwiek chcesz.
mikeserv

Nie odpowiada na pytanie „ i katalogi ”. W tym celu musisz przejść każdy katalog. I sprawdzić, czy wszystkie pliki są starsze niż rok.
naught101

6

Jeśli jesteś rootem systemu, możesz użyć funkcji jądra audytu, aby uzyskać maksymalną informację o tym, kto / kiedy / co uzyskał / utworzył / zmodyfikował pliki. zobacz ten samouczek dla przykładów o smaku Debiana

Jeśli nie masz dostępu do konta root, możesz użyć crontab lub skryptu z nieskończoną pętlą + uśpienie, aby uruchomić pliki lsof i grep w swoim katalogu głównym. Zobacz stronę lsof . Jednak wyświetli tylko te aplikacje, które mają otwarty skrypt plików w momencie uruchomienia lsof. Jeśli aplikacja otworzy plik, edytuj go, a następnie zamknij, nie zobaczysz tej zmiany w lsof.

taki linijka taka powinna wykonać zadanie: lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

Innym sposobem jest użycie interfejsu API jądra inotify w celu sprawdzenia dostępu do pliku. Niestety, jest to system asynchroniczny i nie będziesz mieć takich szczegółów, jak „jaka aplikacja”, „dokładnie kiedy”, „jaki użytkownik”. Będziesz mieć tylko oddzwonienie dotyczące „ten plik został zmodyfikowany / uzyskano dostęp ...”. Niektóre aplikacje (Inotify, FAM, gamin) zapewniają prosty dostęp do interfejsu API


Właśnie próbowałem użyć inotifydo uruchomienia lsof. System jest po prostu zbyt szybki, aby ten pomysł zadziałał: proces często kończy się lub zamyka plik przed uruchomieniem lsof. W niektórych przypadkach może to nadal działać, ale prawdopodobnie bardzo niewiele.
Otheus

auditd To jedyny system, który udostępnia wszystkie szczegóły, niczego nie omijając , ponieważ używa określonej ścieżki kodu w jądrze. Wszystkie inne narzędzia będą pomijać informacje, będą pomijać dane, ponieważ proces zostanie zakończony / zamknął fd.
Adrien M.

Zgoda. Właśnie poddałem test inotify i potwierdziłem, że tak naprawdę nie wykona on wymaganej pracy.
Otheus

3

Możesz wyszukiwać atimei usuwać pliki, które nie były używane przez długi czas (pod warunkiem, że nie skonfigurowałeś systemu, aby nie korzystał z atime), ale jest to dość ryzykowne (sprawdź, tmpreaperczy chcesz iść w ten sposób).

Zamiast tego sugerowałbym Bleachbit , interaktywny program GUI do usuwania cruft.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.