'rm'에 해당되는 글 2건

  1. 2007/08/31 파일 복구 unrm 유틸리티 (1)
  2. 2007/08/28 휴지통기능이 있는 rm 유틸리티 만들기 (1)
Languages/bash2007/08/31 10:50
앞서 썼던 글중에 "휴지통 기능을 지원하는 rm 유틸리티"에 대한 글이 있었다. 이 글은 그 글에 대한 후속편으로, 휴지통에 들어간 파일을 자동복구해주는 unrm 유틸리티의 구현에 관한 것이다.

이 유틸리티는 셸 스크립트로 구현되어 있으며,

alias unrm="/home/<자기계정이름>/bin/recover"

와 같이 앨리어스를 지정해놓고 이용하면 편리하다. 물론 그러려면 아래의 셸 스크립트를 /home/<자기계정이름>/bin/recover에 설치해 두어야 할 것이다.

이 유틸리티는 unrm [-i] regex의 형식으로 사용하며, -i의 옵션을 줄 경우 파일을 복구할 때 마다 정말로 복구할 것인지를 사용자에게 물어본다. 복구할 파일의 이름은 정규표현식을 사용하여 작성하여야 한다는 약간의 불편함이 있긴 하다. 나중에 좀 더 개선할 여지가 있는 점이라고 하겠다.

#!/bin/bash

trashcan=~/trashcan
trashcan_cnt=~/trashcan/count
trashcan_idx=~/trashcan/index

interactive=0

#
# process interactive option
#

for file in $@
do
    if [ "${file:0:1}" == "-" ]
    then
        if [ "${file:1:1}" == "i" ]
        then
            interactive=1
        fi
    else
        only_file+="$file "
    fi
done

#
# recover
#

for file in $only_file
do
    egrep $file $trashcan_idx | sort -r -k2 -k1 | cut -f1-4 | uniq -f1 > $trashcan/tmp1
    cat $trashcan/tmp1 | awk '{print "mv ~/trashcan/"$1"/"$3 ,$2}' > $trashcan/tmp2

    idx=0;
    while read line
    do
        lines[$idx]=$line
        let idx=idx+1
    done < $trashcan/tmp2

    idx2=0;
    while [ $idx2 -lt $idx ]
    do
        if [ $interactive -eq 1 ]
        then
            read -s -n1 -p "If you want to execute '${lines[$idx2]}', press [y/Y] " var
            echo $var;

            if [[ "$var" == "Y" || "$var" == "y" ]]
            then
                echo 'recovery is in progress'
                eval ${lines[$idx2]}
            fi
        else
            eval ${lines[$idx2]}
        fi

        let idx2=idx2+1
    done
    cat $trashcan/tmp1 $trashcan_idx | sort | uniq -u > $trashcan/tmp3
    mv $trashcan/tmp3 $trashcan_idx
    \rm -f $trashcan/tmp?
done

'Languages > bash' 카테고리의 다른 글

파일 복구 unrm 유틸리티  (1) 2007/08/31
휴지통기능이 있는 rm 유틸리티 만들기  (1) 2007/08/28


Posted by 이병준

TRACKBACK http://www.buggymind.com/trackback/17 관련글 쓰기

  1. 휴지통기능이 있는 rm 유틸리티 만들기  삭제

    2007/08/31 11:26TRACKBACK FROM John Coder's Diary

    rm에 대한 앨리어스로 등록 후 사용하는 것이 바람직.이 셸 스크립트는 /home/&lt;자기 계정 이름&gt;/bin/remove로 저장하여 두고,alias rm='/home/&lt;자기 계정 이름&gt;/bin/remove' 같이 해 놓으면 된다.휴지통 저장 없이 그냥 지우려면 \rm ... 과 같이 하면 되니까 그편이 낫다.복구 유틸리티도 만들면 좋은데 귀찮아서 아직 못만들었다.#!/bin/bashtrashcan=~/trashcantrashca..

댓글을 달아 주세요

  1. http://www.scribis.com
    네트워크 정보의 좋은 소스셔서 감사합니다 ,내가이 기사를 읽고 오랫동안 귀하의 사이트를 추적 유지되었습니다, 내가 더 관심을 지불할 것입니다 흥미로운 읽을 수 있습니다,기사가 가장 고전적인 스타일 중 하나가, 내가 한 번 읽으면, 내가 그들과 사랑에 깊이되었습니다이며, 좀 더 완벽한 작품을 기대

    2012/01/17 16:32 [ ADDR : EDIT/ DEL : REPLY ]

Languages/bash2007/08/28 09:38
rm에 대한 앨리어스로 등록 후 사용하는 것이 바람직.
이 셸 스크립트는 /home/<자기 계정 이름>/bin/remove로 저장하여 두고,
alias rm='/home/<자기 계정 이름>/bin/remove' 같이 해 놓으면 된다.
휴지통 저장 없이 그냥 지우려면 \rm ... 과 같이 하면 되니까 그편이 낫다.
복구 유틸리티도 만들면 좋은데 귀찮아서 아직 못만들었다.

#!/bin/bash

trashcan=~/trashcan
trashcan_cnt=~/trashcan/count
trashcan_idx=~/trashcan/index

if [ ! -e $trashcan ]
then
    mkdir $trashcan
fi

if [ ! -e $trashcan_cnt ]
then
    echo '000' > $trashcan_cnt
fi

if [ ! -e $trashcan_idx ]
then
    touch $trashcan_idx
fi

cur_dir=`pwd`
cur_cnt=`head -1 $trashcan_cnt`
cur_cnt=`printf "%03d" $(expr $cur_cnt + 1)`
cur_date=`date +%Y/%m/%d/%H:%M:%S`

for item in $@
do
    if [ -e $item ]
    then
        first_char=`expr substr $item 0 1`
        printf "%s" $first_char
        if [ "$first_char" = "/" ]
        then
            dir=${item}
        else
            dir=${cur_dir}/${item}
        fi

        file=`basename $item`

        printf "%s\t%s\t%s\t%s\n" $cur_cnt $dir $file $cur_date >> $trashcan_idx
        echo $cur_cnt > $trashcan_cnt
        if [ ! -e $trashcan/$cur_cnt ]
        then
            mkdir $trashcan/$cur_cnt
        fi
        mv $item $trashcan/$cur_cnt
    fi
done

'Languages > bash' 카테고리의 다른 글

파일 복구 unrm 유틸리티  (1) 2007/08/31
휴지통기능이 있는 rm 유틸리티 만들기  (1) 2007/08/28


Posted by 이병준

TRACKBACK http://www.buggymind.com/trackback/2 관련글 쓰기

  1. 파일 복구 unrm 유틸리티  삭제

    2007/08/31 11:25TRACKBACK FROM John Coder's Diary

    앞서 썼던 글중에 "휴지통 기능을 지원하는 rm 유틸리티" (새 창으로 열기)에 대한 글이 있었다. 이 글은 그 글에 대한 후속편으로, 휴지통에 들어간 파일을 자동복구해주는 unrm 유틸리티의 구현에 관한 것이다.이 유틸리티는 셸 스크립트로 구현되어 있으며,alias unrm="/home/&lt;자기계정이름&gt;/bin/recover" 와 같이 앨리어스를 지정해놓고 이용하면 편리하다. 물론 그러려면 아래의 셸 스크립트를 /home/&lt;자기계정이..

댓글을 달아 주세요

  1. 네트워크 정보의 좋은 소스셔서 감사합니다 ,내가이 기사를 읽고 오랫동안 귀하의 사이트를 추적 유지되었습니다, 내가 더 관심을 지불할 것입니다 흥미로운 읽을 수 있습니다,기사가 가장 고전적인 스타일 중 하나가, 내가 한 번 읽으면, 내가 그들과 사랑에 깊이되었습니다이며, 좀 더 완벽한 작품을 기대
    http://www.uggbootslife.com/

    2012/01/17 16:34 [ ADDR : EDIT/ DEL : REPLY ]