728x90
반응형
 find 명령을 이용하면 됩니다.
아래 예제는 find로 할수 있는 다양한 옵션을 넣은 것인데
조합해서  사용 하시면 됩니다. 필요에 따라 min-depth max-depth  는 필요 없을 수도 있으나 참고 입니다.
그리고 print 문장에 rm -rf 까지 넣을 수도 있는데 셀에서 지우며 판단을 위해 뺍니다.

find 명령 연습
-----------------------------------------------------------------------

1) find /path -type d -mtime +30    : 30일 이상된 폴더를 찾는 명령입니다.

2) find /path -type d  -min-depth 2 -max-depth 3 -mtime +30  
                          /path    하위 2단계 ~ 3단계 사이의 디렉토리를 지웁니다.
                          / 이게 없으면 하위 모든 디렉토리가 나옵니다.

3) 위의 명령 결과를 파일로 저장하고 지우거나 지우는 명령을 바로 보낼 수가 있습니다.
   find /path -type d  -min-depth 2 -max-depth 3 -mtime +30   --exec rm -rf {} \;

  * : 위 문장의 마지막    \; 가 가장 중요합니다. 이게 내부적으로 나오는 디렉토리명 하나씩 rm 명령을 보냅니다. 이게 없으면   rm -rf dir1  rm -rf dir2 이런 식으로 내부에서 수행 되므로 명령 오류가 날 것입니다.

4) 저는  find /path -type d  -min-depth 2 -max-depth 3 -mtime +30  -printf "/path/%P\n"  > d.lst
      로 파일로 결과를 저장을 하고
    다음 셀을 만들어 볼 것 같습니다.

     -printf "/path/%P\n"    :  find 를 수행 한 곳과 저장되는 파일 위치가 다르므로 실제 Full Path를 만들기 위해 사용한 것입니다.


[ rmdir.sh ]
--------------------------------------

find /path -type d  -min-depth 2 -max-depth 3 -mtime +30  -printf "/path/%P\n" > d.lst

FILES=`cat d.lst`    # 파일을 변수로 저장하기

cd  /path                # find 한 위치와 동일한 상태가 되어야 함..

for  f_name  in  $FILES
do
     if [ -d "$f_name"]                     # 디렉토리가 있으면 지우고 아니면 넘어감
     then
           rm -rf "$f_name" 
           Ret=$?
           if [ $Ret -eq 0 ]
           then 
                  echo " dir deleted [$?]"   >> del.ok    # 지우는 것이 성공한것
           else
                 echo " dir deleted [$?]"   >> del.err     # 지우다가 권한 문제로 못지울수 있음
           fi
    else
          echo " dir not Exists [$f_name] !! " >> del.skip    # 서브 디렉토리가 이미 지워질수 있음
    fi

done
 ----------------------------------------------------------

실제 명령은 한줄이 될수도 있는데  좀 다양한 것을 넣어서 어려울 수도 있겠네요 
공부하는 데 정답보다 배워야 할 것을 던져 봅니다.

그냥 보면 쉽습니다.
셀스크립트는 간단하면서 다양한 일들을 할수 있습니다.
위의 셀스크립트는 간단하면서도 상당한 난이도를 둔 일들을 할 수 있는 프로토 타입입니다.

숙제를 하는 것도 좋지만 다른데 많이 쓸수 있을 것입니다.

장담 하건데 위의 셀이면 어떤 일에든 고수가 될수 있을 것입니다. ^^ 

도움이 되셨기를 바랍니다.

 

 

 rsnapshot 이라는 오픈 소스 백업이 있는데요.

정말 편합니다. 증분백업을 하기 때문에 공간도 많이 차지 하지 않구요.
이용해 보셔요.
원하는 디렉토리별로 백업을 할 수 있습니다.
도움이 필요하시면 도와 드릴께요.

 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,