백업용 쉘스크립트에서 조건문(if)를 넣으려면 어떻게 해야할까요?
글쓴이: viper9 / 작성시간: 수, 2012/06/20 - 4:10오후
아래는 호스팅 업체에서 작성해준 백업 쉘스크립트입니다.
#!/bin/sh LANG=en PATH=/usr/bin:/bin DOW=`date +%a` DOM=`date +%d` MYSQLPASSWD="foofoo" HOMEDIR=/home LOCALDIR=/home BACKUPSERVER="192.168.0.1" BACKUPDIR="." BACKUPID="foo" BACKUPPW="foofoo" cd /home for USER in *; do tar -cpf - ${USER} | ncftpput -u ${BACKUPID} -p${BACKUPPW} -c ${BACKUPSERVER} ${BACKUPDIR}/user/${USER}-${DOW}.tar done cd .. done DATABASE=`mysql -u root -p${MYSQLPASSWD} -e "show databases;" -s` for DB in ${DATABASE}; do mysqldump -u root -p${MYSQLPASSWD} --opt -e ${DB} --extended-insert=false | ncftpput -u ${BACKUPID} -p${BACKUPPW} -c ${BACKUPSERVER} ${BACKUPDIR}/user/${DB}-${DOW}.sql done cd / tar -cpf - etc | ncftpput -u ${BACKUPID} -p${BACKUPPW} -c ${BACKUPSERVER} ${BACKUPDIR}/system/etc-${DOW}.tar cd /var/www/ tar -cpf - html | ncftpput -u ${BACKUPID} -p${BACKUPPW} -c ${BACKUPSERVER} ${BACKUPDIR}/system/html-${DOW}.tar html
위의 스크립트로 정상적으로 잘 작동하긴하는데요.
/home 폴더를 파일백업할 때 특정 계정은 제외하고 싶습니다.
bash 쉘스크립트에서 if를 넣을줄 몰라서 한참 해매이다가 구글을 겨우겨우 뒤져서 아래와 같이 변경했습니다.
for USER in *; do if [ \(${USER} != "aaa"\) -a \(${USER} != "bbb"\) ] then tar -cpf - ${USER} | ncftpput -u ${BACKUPID} -p${BACKUPPW} -c ${BACKUPSERVER} ${BACKUPDIR}/user/${USER}-${DOW}.tar fi done
이런식으로 if-fi문을 넣어서 aaa와 bbb 계정은 백업하지 않도록 넣었더니 오류가 나네요...
쉘스크립트에서 if문을 쓸줄을 몰라서 질문 올립니다. 특정 계정명 (aaa, bbb... etc.)를 제외하려면 어떻게 해야하는지 도움 좀 부탁드립니다.
도와주시는 분께 미리 감사드립니다. (__) 꾸벅~
Forums:
..
tar -cpf - ${USER} 부분에 --exclude 나 --exclude-from 등을 사용하세요
검색창에 tar exclude 등으로 검색하시면 예제 많이 나옵니다. 따로 파일등으로 빼서 관리하셔도 됩니다.
if 문으로 제거 하는거 보다 이게 제일 관리하기 편하겠네요
--------------- 절취선 ------------------------
하늘은 스스로 삽질하는 자를 삽으로 팬다.
http://glay.pe.kr
댓글 달기