특정위치의 특정파일을 모두 찾아서 삭제하기(find)
서버내부에서 불필요한 파일을 모두 한꺼번에 삭제하려면 어떻게 할까요.
모두 하나씩 찾아서 삭제하려니 엄두가 나질 않고, 분명 초보관리자들에겐 간단한 일은 아닐 것입니다.
흔히 서버내부에서 불필요한 파일들은 어떤 것들이 있을까요.
가장 흔한 파일로는 *.bak, 즉 백업파일이 있을 수 있습니다.
그리고 *.old 나 *.org 또는 *.orig등의 작업전 복사본등이 있을 수 있겠지요.
하지만, 서버장애의 원인을 발생할 수 있는 웹로그파일을 모두 찾아서 삭제하는 일도 무시할 수는 없는 일입니다.
apache에 설정된 가상호스트들이 모두 동일한 access_log파일을 가지는 경우도 있겠지만, 대부분의 가상호스트들은 자기자신의 홈페이지디렉토리에 별도로 저장되는 경우가 가장 일반적입니다.
이런 경우에 모든 계정마다 access_log을 찾아서 삭제하려면 여간 귀찮고 힘든일이 아닐 수 없습니다.
이럴때는 간단히 다음과 같이 해보시기 바랍니다.
[root@host1 sspark]# find / -name access_log -exec rm -f {} \;
즉, 위의 명령어는 서버전체의 / 디렉토리를 대상으로 (/) access_log파일을 찾아서(find) "rm -f 파일명"이란 명령어를 실행하라(-exec)는 의미입니다.
따라서 루트드렉토리(/)이하의 모든 디렉토리에 존재하는 모든 access_log파일들이 모두 삭제됩니다.
이번에는 /home디렉토리에 존재하는 모든 error_log파일을 모두 찾아서 삭제하는 예입니다.
[root@host1 sspark]# find /home -name error_log -exec rm -f {} \;
이와 같은 예를 몇개 더 들어 보이면 다음과 같습니다.
아래의 예는 /home에 존재하는 모든 *.bak파일을 모두 찾아서 삭제합니다.
하지만, 이런 명령어를 사용할 때에는 본인이 관리하는 서버내부에 bak파일이 진짜로 필요하지 않은가를 확인한 후에 사용하셔야합니다.
[root@host1 sspark]# find /home -name *.bak -exec rm -f {} \;
단, 주의하실 것은 삭제하려는 파일이 진짜로 서버내부에서 불필요한 파일들인가를 반드시 확인하신 후에 사용하셔야한다는 것입니다.
그리고 가능하다면 경로를 전체경로(/)를 주는 것은 삼가하시기 바랍니다.