수년에 걸쳐 많은 숨겨진 파일과 디렉터리가 내 디렉터리 $HOME
에 나타났습니다 .
필요하지 않은 것을 계속 삭제하고 싶습니다.
어떤 응용 프로그램이 이러한 숨겨진 파일과 디렉터리를 생성하는지 어떻게 알 수 있습니까?
숨겨진 파일 및 디렉터리 삭제가 안전하고 중요한 내용이 손실되지 않으며 이에 의존하는 모든 항목의 작동이 중단되지 않도록 하려면 어떻게 해야 합니까?
답변1
일시적으로 교체할 수 있습니다.
cd ~
mkdir .trash
find . ! -name . -prune ! -type d -atime +365 -exec \
sh -c 'touch -a -- "$@"
mv -- "$@" ~/.trash
' -- {} +
$HOME
이렇게 하면 하위 디렉터리로 재귀적으로 이동하지 않고 디렉터리에서 1년 동안 액세스하지 않은 모든 파일을 찾을 수 있습니다 . 모든 항목의 액세스 시간을 지금으로 업데이트한 다음 모두 이름이 지정된 디렉터리로 이동합니다 .trash
. 실행과 오래된 파일 삭제를 시작하기로 결정하는 사이에 문제가 발생하면 ~/.trash
해당 파일 중 일부를 다시 이동하여 휴지통에 넣은 파일이 문제를 일으키는지 확인할 수 있습니다.
답변2
시스템의 루트라면 다음을 사용할 수 있습니다.심사커널 기능에는 누가/언제/무엇에 액세스하여 파일을 생성/수정했는지에 대한 가장 큰 정보가 있습니다.데비안 스타일 예제는 이 튜토리얼을 참조하세요.
루트 액세스 권한이 없으면 crontab 또는 무한 루프 + 절전 모드가 포함된 스크립트를 사용하여 실행할 수 있습니다.라소프& grep 파일을 homedir에 저장하세요.lsof 맨페이지를 참조하세요.. 그러나 lsof가 시작될 때 파일 설명자가 열려 있는 응용 프로그램만 표시됩니다. 애플리케이션이 파일을 열고 편집한 다음 닫는 경우 lsof에서는 이 변경 사항을 볼 수 없습니다.
다음과 같은 한 줄이면 충분합니다.lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'
또 다른 방법은inotify 커널 API파일에 액세스하는 시기를 확인하세요. 아쉽게도 이것은 비동기 시스템이므로 "어떤 애플리케이션", "특정 시간", "어떤 사용자"에 대한 세부 정보가 없습니다. "이 파일은 수정/액세스되었습니다..."에 대한 콜백만 받게 됩니다. 일부 응용 프로그램(이노티파이, FAM, 가민)API에 대한 간단한 액세스를 제공합니다.
답변3
나는 추천한다표백 비트, 정크 제거를 위한 대화형 GUI 프로그램입니다. 배포판 저장소나 다음에서 설치할 수 있습니다.플랫 허브그리고로부터블리치비트.org.
마이크 셀프가 제안하는 것atime
오랫동안 사용되지 않은 파일을 찾아서 삭제하십시오(atime을 사용하지 않도록 시스템을 구성하지 않은 경우). 그러나 이는 매우 위험합니다( tmpreaper
이 작업을 수행하려는지 확인하십시오).