BACKRUSH  대화방입장  유닉스명령  다음  자료실  Ascii Table   Exploit   원격접속  달력,시간   프로세스  
지하철노선   Whois   RFC문서   SUN FAQ   SUN FAQ1   C메뉴얼   PHP메뉴얼   너구리   아스키월드 아이피서치

글쓴이: Jagdice 디렉토리 별로 압축해서 백업할려는 스크립트 조회수: 10587

racingeg@shinbiro.com

왜 만들었나? 한방에 압축할려다 gzip 이 700~1000 mb 사이에서
죽어버리기 때문에, du 로 뒤지면서 작업했더니 부분 복구할때 무지
귀찮아서.

파일이 너무 쪼개져서 ftp 로 전송시 시간이 너무 많이 걸릴수 있다?
!!인정합니다.
아직까지 생각으론 dir-list 파일을보고 파일 번호 가 몇번인지 보고
그파일 찾아서 복구해야함.
파일이름에 full-path 를 넣거나 md5sum을 넣는 방법도 있으나 파일 보기가 더 힘들어질까봐 하지않음.

암튼 심심해서 만들어본거구요 <스톤형님 Jag의 허접 스크립 꼴보기싫음 지우시길 >
____ 스크립트 이해가 잘 안가실꺼에요 복잡하게 짜서리 뭔가 질문있다?
메일 보고 내키면 답멜 드리죠.             리눅스가 좋아....

#!/bin/bash # ""server_side_script_v2.sh"" backup file make script. # # !!! Important. all TARs dent has dirs so make dirs, # before extract backupfiles maden by this. # $1~2 BE MUST FULL PATH , or ERROR occured # $1 :: backupfile's save point(dir) # $2 :: listfile's name (that backupfile's list) # precreate like this form. (ex. "/usr/local/apache" ) # I maden dirlist "find / -type d 2> /dev/null > LISTFILE" # U have error make LISTFILE about "/" then make "/dirs" and # concatenate files like this "cat LISTFILE1 LISTFILE2 > LISTFILE_ALL" # begin verify arguments exist if [ "$2" = "" ];then echo echo " !!! Important. all TARs don't has dirs so make dirs, " echo " before extract backupfiles maden by this." echo echo " This script DO NOT check backup destination disk's space." echo " You MUST STOP MANUALLY before DISKFULL." echo " will upgrade this feature next 'v3' version." echo echo " argument 1~2 BE MUST FULL PATH , or ERROR occured" echo " ARG1 :: backupfile's save point(dir)" echo " ARG2 :: listfile's name (that backupfile's list)" echo " precreate like this form. (ex. " 143 /usr/local/apache " )" echo echo " ---===INPUT ARGUMENTS COLLECTLY===--- " echo exit 1 # end verify arguments exist fi # notify start script. echo -en "\n\t_<<sSs-v2>>_\n" # begin make line No. contained DIRLISTFILE cat -n $2 > $2"_LNC" # end make link No. contained DIRLISTFILE # begin SubDirNo ( 1 dir's capacity is about 17000 ~ 35000 ) subdirno=$(expr $(cat $2 | wc -l) / 10000) i=0 while [ $i -lt $(($subdirno+1)) ] do mkdir $1/$i 2> /dev/null i=$(($i+1)) done # end SubDirNo # /extra/ Manually start point. if [ "`expr 0 + $3 2> /dev/null`" = "" ] ; then i=0 else i=`expr -1 + $3` fi #################################################### ########### Main Loop part #################### #################################################### while [ : ] ; do : i=`expr $i + 1` #read oneline curline=`tail +$i $2"_LNC" | head -1` curno=`echo $curline | awk '{print $1}'` curdir=`echo $curline | awk '{print $2}'` #addition code for patch ( ERROR occured " " (space) contained DIR name ) curdir=`tail +$i $2 | head -1` # begin EOF check if [ "$curline" = "" ] ; then echo -e "\n Script reached EOF. quit script." exit 0 fi # end EOF check # begin /extra//extra/ Manually end point if [ $curno -gt $(($4)) ] && [ $(($4)) != 0 ] ; then echo -e "\n Script reached Manually END POINT. quit script." exit 0 fi # end /extra//extra/ Manually end point echo -n $curno"_+" # begin Blank curdir check 0 -> skip tar, 1 -> make tar. if [ "$curdir" = "" ] ; then # blank curdir check 0 's process echo -en "\b_BRL_\t" else # blank curidr check 1 's process cd "$curdir" 2> /dev/null # Change Dir ERROR check. (echo error mesg and skip backup) if [ $? = 1 ] ; then echo -en "\b_CD_ERROR_\t\t\t" # change dir error check's else ( NOW do backup ) else find . -type d | tail +2 > curexcdirlist tar zcf \ $1/$(expr $curno / 10000)/$curno"_"`hostname -f`"_"`date + %Y%m%d`.tgz . \ --exclude-from=curexcdirlist --exclude=./curexcdirlist #tar's error monitor start if [ $? != 0 ] ; then echo -e "\b\n TAR have ERROR. need Root's care. ( `date +%Y%m%d:%T`)" fi #tar's error monitor end rm -f curexcdirlist #make and append md5sum's contents cd $1/$(expr $curno / 10000)/ md5sum $curno* >> md5sum.crc # add prefix name to backupfile , # prevent tgz's deletion before md5sum completed rename $curno c$curno $curno* # delete "+" from stdout. this is useful checking backuplog. echo -en "\b \b" # change dir error check's fi fi # end BLANK curdir check fi done # END OF SCRIPT


관련글 : 없음 글쓴시간 : 2003/12/03 19:30 from 211.211.215.30

  expect 툴사용 목록보기 새글 쓰기 지우기 응답글 쓰기 글 수정 testttest  
BACKRUSH  대화방입장  유닉스명령  다음  자료실  Ascii Table   Exploit   원격접속  달력,시간   프로세스  
지하철노선   Whois   RFC문서   SUN FAQ   SUN FAQ1   C메뉴얼   PHP메뉴얼   너구리   아스키월드 아이피서치