rm 스크립트를 작성해 봤습니다.
2012년 12월 31일.
야간에 지인으로부터 다급한 전화를 받음.
실수로 /usr/local/bin 디렉토리 안에 명령어를 몽땅 삭제 했다고 하네요. 전화 받는 본인도 어이 없음.... ㅠㅠ
다시 프로그램들을 설치중인데 의존성 지옥에 빠져있어서 죽을 지경이라고 함... ㅋㅋㅋ
예전에 저도 그런 일을 겪어본지라... 남일 같지 않아서 지인과 저의 앞으로의 정신건강을 위해 작성해봅니다.
뭐.. 쉬운 코드로 짰으니 주석 같은건 없어도 될듯합니다..
환경은 AIX 5.3이지만 뭐 인터프리터만 바꿔주면 리눅스에서도 쓸수 있는 있습니다...
이 글을 쓰는 현재 시점에 테스트 했고 잘 돌아가는 것도 확인 했습니다.
혹시 더 간결한 코드나 혹은 수정/보완 해야 할 부분이 있다면 리플 부탁드립니다.
#!/usr/bin/ksh
DIR=/sw/work/`date +%Y-%m-%d`
PWD=`pwd`
DATE=`date +%Y_%m_%d_%H:%M`
TARGET=$DIR
OPT=$1
check_ () {
CHK=$(du -k $OPT|grep $OPT|awk '{print $1}'|wc -c)
if [ $CHK -gt 7 ]; then
delete -rf $OPT
else
mv_
fi
}
mv_ () {
COUNT=$(ls -lrt $TARGET|wc -l)
SUM=`expr $COUNT + 1`
mv $OPT $OPT-$SUM
mv $OPT-$SUM $TARGET
echo "------------------------------------------------------------" >> /sw/work/trash.log
echo "$DATE :$PWD :$OPT to $OPT-$SUM" >> /sw/work/trash.log
echo " " >> /sw/work/trash.log
exit
}
if [ -d $DIR ]; then
check_
else
mkdir /sw/work/`date +%Y-%m-%d`
chmod 700 /sw/work/`date +%Y-%m-%d`
check_
fi
- 첨부 -
원본 rm 은 delete로 rename 해줬습니다.
또 개발이나 설정파일 수정등은 삭제 대상이 중복될 가능성도 있으므로
삭제 대상은 무조건 이름뒤에 카운트 숫자가 들어가게 설정되어 있습니다.ㅋㅋㅋ