백업용 쉘스크립트에서 조건문(if)를 넣으려면 어떻게 해야할까요?

viper9의 이미지

아래는 호스팅 업체에서 작성해준 백업 쉘스크립트입니다.

#!/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.)를 제외하려면 어떻게 해야하는지 도움 좀 부탁드립니다.

도와주시는 분께 미리 감사드립니다. (__) 꾸벅~

glay의 이미지

tar -cpf - ${USER} 부분에 --exclude 나 --exclude-from 등을 사용하세요

검색창에 tar exclude 등으로 검색하시면 예제 많이 나옵니다. 따로 파일등으로 빼서 관리하셔도 됩니다.

if 문으로 제거 하는거 보다 이게 제일 관리하기 편하겠네요


--------------- 절취선 ------------------------
하늘은 스스로 삽질하는 자를 삽으로 팬다.

http://glay.pe.kr

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.