리눅스 파일 즉시(빠르게)삭제하는 방법?

리눅스 파일 즉시(빠르게)삭제하는 방법?

QA

리눅스 파일 즉시(빠르게)삭제하는 방법?

본문

리눅스서버에 운영중인 사이트의 세션 폴더에 파일이 8000000개 정도 있는데요. 

너무 많은 양이라서 일일이 삭제하기에 어려워서 폴더자체를 삭제하려고 해봤는데

하루가 지나도 일부밖에 삭제가 안되네요.

혹시 session 폴더 자체와 파일을 빠르게 한번에 삭제하는 방법이 없을까요?

이 질문에 댓글 쓰기 :

답변 2

rm -Rf session 

R : 디렉토리와 그 내용을 제거

f : 강제로

i : 삭제내역을 보이게 (이건 안해도 됨)

 

=> 이렇게 하시면 한번에 삭제가 됩니다.

=> 8000000개면 너무 많아서 바로 삭제는 안될겁니다.

 

#!/usr/local/php/bin/php -q
<?
echo "'완료' 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.<br><br>";
flush();

$session_path = "/home/bokeum/public_html/data/session";  // 세션이저장된 디렉토리 
if (!$dir=@opendir($session_path)) {
  echo "세션 디렉토리를 열지못했습니다.";
}

$cnt=0;
while($file=readdir($dir)) {

    if (!strstr($file,'sess_')) {
        continue;
    }

    if (strpos($file,'sess_')!=0) {
        continue;
    }

    if (!$atime=@fileatime("$session_path/$file")) {
        continue;
    }
    ///if (time() > $atime + (3600 * 1)) {  // 지난시간을 초로 계산해서 적어주시면 됩니다. default : 6시간전
    if (time() > $atime + 60) {  // 지난시간을 초로 계산해서 적어주시면 됩니다. default : 6시간전
        $cnt++;
        $return = unlink("$session_path/$file");
        echo " $session_path/$file \n";

        flush();
    }
}
echo "세션데이터 {$cnt}건 삭제 완료.<br><br>프로그램의 실행을 끝마치셔도 좋습니다.\n";
?>
 

=> 저는 해당 shell 을 하나 만들어서 새벽에 크론설정하여 하루에 한번 삭제해줍니다.

 

#!/usr/local/php/bin/php -q

=> php 실행위치

$session_path = "/home/bokeum/public_html/data/session";

=> 세션경로

=> 두부분만 수정하셔서 사용하시면 됩니다. 

 

=> 금요일 저녁에 걸어두면 주말내에 다 삭제는 되실거 같네요

리눅스에서는 많은 파일을 rm명령어로 한번에 삭제할 수 없습니다.

 

https://greenhappy.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-session%EB%93%B1-%EB%8C%80%EB%9F%89%ED%8C%8C%EC%9D%BC-%EC%82%AD%EC%A0%9C

 

참고하세요.

 

세션 삭제 질문을 자주 올리시는데 세션을 memcached 나 redis 이용해보세요.

 

https://blog.lael.be/post/1494

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 126,529 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT