'gmail'에 해당되는 글 1건

  1. 2008/09/09 gmail을 이용한 svn 저장소 백업 (2)
svn을 이용하다보면 저장소 백업이 신경쓰일 것입니다.
특히나 크기가 큰 저장소의 경우에는 저장할 공간도 마땅치 않습니다.

저 또한 마찬가지로 개인적으로 운영하는 프로젝트의 저장소 백업이 문제였는데
몇일 머리를 굴리다가 방법이 생각나서 여기에 적어둡니다.

일단 저장소 백업을 기존에는 그냥 저장소를 덤프후 압축을 한 다음에 ftp로 로컬에 저장해놓는 형식이었습니다.

그러다보니 일일이 손으로 해야하는 번거러움이 발생하고 까먹었을 경우 자칫 저장소가 날아가는 불상사가 생길수 있습니다.

그래서 일단 저장소를 덤프후 압축을 하고 이메일로 압축파일을 첨부하여 보내는걸 생각했습니다.

그것도 저장공간이 거의 무한대인 지메일을 이용하기로 결정했습니다.

그러기 위해서는 백업은 쉘스크립트로 진행할 것이므로 커맨드라인 이메일 발송 툴이 필요했습니다.

찾아보니 mutt라는게 있더군요.

이를 이용하여 이메일을 보내는 방법은 다음과 같습니다.

mutt [ -n ] [ -F muttrc ] [ -a file ] [ -c address ] [ -i filename ] [ -s subject ] address [ address ... ]

-a      attach a file to a message
-b      specify a blind carbon-copy (BCC) address
-c      specify a carbon-copy (Cc) address
-e      specify a config command to be run after initilization files are read
-f      specify a mailbox to load
-F      specify an alternate file to read initialization commands
-h      print help on command line options
-H      specify a draft file from which to read a header and body
-i      specify a file to include in a message composition
-m      specify a default mailbox type
-n      do not read the system Muttrc
-p      recall a postponed message
-R      open mailbox in read-only mode
-s      specify a subject (enclose in quotes if it contains spaces)
-v      show version number and compile-time definitions
-x      simulate the mailx(1) compose mode
-y      show a menu containing the files specified by the mailboxes command
-z      exit immediately if there are no messages in the mailbox
-Z      open the first folder with new message,exit immediately if none

여러가지 옵션이 있는데 다 필요 없고 단순히 제목과 간단한 내용과 첨부파일을 보내는 목적이므로 다음과 같이 사용하면 됩니다.

mutt -F .mutt-local -a 파일이름 -s 제목 보낼이메일 < 본문이저장된파일이름

여기서 한가지 중요한게 .mutt-local이라는 파일입니다. 이 파일은 mutt의 설정을 저장하는데 다음에서 설명하겠지만 smtp 프로그램을 지정하는데 사용할 것입니다.

mutt는 아웃룩익스프레스나 기타 이메일 클라이언트와 다르게 smtp 서버에 접속하여 이메일을 직접 보내주는 역할을 하지 않습니다. mutt의 역할은 단순히 사용자의 입력을 받아서 mutt설정파일에 있는 smtp 프로그램에게 데이터를 전달해주는 역할밖에 하지 않습니다. 기본적으로 sendmail이 사용되도록 되어있는데 sendmail은 로컬 smtp서버만 이용이 가능하므로 외부 smtp서버를 쓰기 위해서는 별도의 smtp프로그램을 사용해야합니다.

그 프로그램중 ssmtp라는 것이 있습니다.

소스를 다운로드 하여 configure에 --enable-ssl 옵션을 주어 컴파일을 합니다.

그리고 make install을 하면 로컬도메인과 기본 smtp서버의 포트를 입력하라고 하는데 그냥 기본으로 엔터를 쳐주시면 됩니다. 그리고나서 ssmtp.conf파일의 위치가 출력되는데 2.61 버전 기준으로는 기본이 "/usr/local/etc/ssmtp/ssmtp.conf"가 됩니다.

이 파일을 열어서 아래와 같이 입력해줍니다.

mailhub=smtp.gmail.com:587
useSTARTTLS=YES

그리고 위에서 말했던 .mutt-local 파일 내용에

set sendmail="ssmtp설치위치/ssmtp -au 지메일아이디 -ap 지메일암호"

를 입력하고 저장해줍니다. 만약에 .mutt-local 파일이 없다면 만들고 입력해줍니다.

이렇게 하면 모든 설정은 다 끝났습니다. 이제 쉘스크립트를 만들어서 svn저장소를 덤프하고 압축을 하고 이메일로 보내면 됩니다.

한가지 주의할 점은 지메일은 한번에 10메가 이상은 보낼수 없다는 것입니다. 그렇기 때문에 압축할 때 분할압축을 해주어야합니다.

아래는 제가 사용하는 백업스크립트입니다.

#!/bin/sh

date="$(date +%y%m%d)"
backupdir="tmp_svnbackup"

#delete tmp dir
rm -rf ./${backupdir}

echo "dump svn repositary"
svnadmin dump /var/svn/chadr > dumpfile.${date}

mkdir ${backupdir}

echo "dump complete"
echo "compressing...."
7za a -mx9 -mmt -v9m ./${backupdir}/[dev.dalmuri.net.var.svn.chadr]dumfile.${date}.7z dumpfile.${date}

chown -R chadr:developer ./${backupdir}

cd ${backupdir}

echo ""
echo "file list of sending."

count=0

for file in $(ls)
do
  echo "${file}"
  count=`expr $count + 1`
done

echo ""

i=1
#send email
for file in $(ls)
do
  echo "sending...(${i}/${count}) ${file}"
  mutt -F ../.mutt-local -a ${file} -s svnbackup_${date}_[${i}/${count}] chadr@dalmuri.net < ../muttbody
  echo "sending complete. ${file}"
  i=`expr $i + 1`
done

echo "all sending complate"

cd ..
#delete tmp dir
rm -rf ./${backupdir}


       
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/09/09 14:01 2008/09/09 14:01