백업용 쉘스크립트에서 조건문(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
댓글 달기